'use client' import React, { useCallback, useState } from 'react' import { useContext } from 'use-context-selector' import Modal from '@/app/components/base/modal' import I18n from '@/context/i18n' import type { PluginDeclaration } from '../../types' import { InstallStep } from '../../types' import Uploading from './steps/uploading' import Install from './steps/install' import Installed from './steps/installed' type InstallFromLocalPackageProps = { file: File onSuccess: () => void onClose: () => void } const InstallFromLocalPackage: React.FC = ({ file, onClose }) => { const [step, setStep] = useState(InstallStep.uploading) const { locale } = useContext(I18n) const [uniqueIdentifier, setUniqueIdentifier] = useState(null) const [manifest, setManifest] = useState({ name: 'Notion Sync', description: 'Sync your Notion notes with Dify', } as any) const handleUploaded = useCallback((result: { uniqueIdentifier: string manifest: PluginDeclaration }) => { setUniqueIdentifier(result.uniqueIdentifier) setManifest(result.manifest) setStep(InstallStep.readyToInstall) }, []) const handleInstalled = useCallback(async () => { setStep(InstallStep.installed) }, []) return (
Install plugin
{step === InstallStep.uploading && ( )} { step === InstallStep.readyToInstall && ( ) } { step === InstallStep.installed && ( ) }
) } export default InstallFromLocalPackage