'use client' import type { FC } from 'react' import React, { useCallback } from 'react' import type { PluginDeclaration } from '../../types' import { InstallStep } from '../../types' import Install from './steps/install' import Installed from '../base/installed' import useRefreshPluginList from '../hooks/use-refresh-plugin-list' type Props = { step: InstallStep onStepChange: (step: InstallStep) => void, onStartToInstall: () => void setIsInstalling: (isInstalling: boolean) => void onClose: () => void uniqueIdentifier: string | null, manifest: PluginDeclaration | null, errorMsg: string | null, onError: (errorMsg: string) => void, } const ReadyToInstall: FC = ({ step, onStepChange, onStartToInstall, setIsInstalling, onClose, uniqueIdentifier, manifest, errorMsg, onError, }) => { const { refreshPluginList } = useRefreshPluginList() const handleInstalled = useCallback((notRefresh?: boolean) => { onStepChange(InstallStep.installed) if (!notRefresh) refreshPluginList(manifest) setIsInstalling(false) }, [manifest, onStepChange, refreshPluginList, setIsInstalling]) const handleFailed = useCallback((errorMsg?: string) => { onStepChange(InstallStep.installFailed) setIsInstalling(false) if (errorMsg) onError(errorMsg) }, [onError, onStepChange, setIsInstalling]) return ( <> { step === InstallStep.readyToInstall && ( ) } { ([InstallStep.uploadFailed, InstallStep.installed, InstallStep.installFailed].includes(step)) && ( ) } ) } export default React.memo(ReadyToInstall)