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)
|