'use client' import React, { useCallback, useState } from 'react' import Modal from '@/app/components/base/modal' import type { PluginDeclaration } from '../../types' import { InstallStep } from '../../types' import Install from './steps/install' import Installed from './steps/installed' import { useTranslation } from 'react-i18next' const i18nPrefix = 'plugin.installModal' type InstallFromMarketplaceProps = { packageId: string manifest: PluginDeclaration onSuccess: () => void onClose: () => void } const InstallFromMarketplace: React.FC = ({ packageId, manifest, onSuccess, onClose, }) => { const { t } = useTranslation() // readyToInstall -> check installed -> installed/failed const [step, setStep] = useState(InstallStep.readyToInstall) // TODO: check installed in beta version. const getTitle = useCallback(() => { if (step === InstallStep.installed) return t(`${i18nPrefix}.installedSuccessfully`) if (step === InstallStep.installFailed) return t(`${i18nPrefix}.installFailed`) return t(`${i18nPrefix}.installPlugin`) }, []) const handleInstalled = useCallback(() => { setStep(InstallStep.installed) }, []) const handleFailed = useCallback(() => { setStep(InstallStep.installFailed) }, []) return (
{getTitle()}
{ step === InstallStep.readyToInstall && ( ) } { ([InstallStep.installed, InstallStep.installFailed].includes(step)) && ( ) }
) } export default InstallFromMarketplace