'use client' import type { FC } from 'react' import type { PluginCategoryEnum, PluginDeclaration } from '../../types' import * as React from 'react' import { useCallback } from 'react' import { InstallStep } from '../../types' import Installed from '../base/installed' import useRefreshPluginList from '../hooks/use-refresh-plugin-list' import Install from './steps/install' type Props = Readonly<{ step: InstallStep onStepChange: (step: InstallStep) => void onStartToInstall: () => void setIsInstalling: (isInstalling: boolean) => void onClose: () => void uniqueIdentifier: string | null manifest: PluginDeclaration | null errorMsg: string | null installContextCategory?: PluginCategoryEnum onError: (errorMsg: string) => void }> const ReadyToInstall: FC = ({ step, onStepChange, onStartToInstall, setIsInstalling, onClose, uniqueIdentifier, manifest, errorMsg, installContextCategory, 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)