mirror of
https://github.com/langgenius/dify.git
synced 2026-07-25 13:38:31 +08:00
83 lines
2.2 KiB
TypeScript
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)
|