dify/web/app/components/plugins/install-plugin/install-from-local-package/ready-to-install.tsx
Stephen Zhou a84c2d36a3
style: format with vp fmt (#38803)
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-07-12 15:57:46 +00:00

83 lines
2.2 KiB
TypeScript

'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<Props> = ({
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 && (
<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}
installContextCategory={installContextCategory}
onCancel={onClose}
/>
)}
</>
)
}
export default React.memo(ReadyToInstall)