| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 | '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<Props> = ({  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 && (          <Install            uniqueIdentifier={uniqueIdentifier!}            payload={manifest!}            onCancel={onClose}            onInstalled={handleInstalled}            onFailed={handleFailed}            onStartToInstall={onStartToInstall}          />        )      }      {        ([InstallStep.uploadFailed, InstallStep.installed, InstallStep.installFailed].includes(step)) && (          <Installed            payload={manifest}            isFailed={[InstallStep.uploadFailed, InstallStep.installFailed].includes(step)}            errMsg={errorMsg}            onCancel={onClose}          />        )      }    </>  )}export default React.memo(ReadyToInstall)
 |