'use client' import type { FC } from 'react' import type { Plugin, PluginDeclaration, PluginManifestInMarket } from '../../types' import { Button } from '@langgenius/dify-ui/button' import * as React from 'react' import { Trans, useTranslation } from 'react-i18next' import Badge, { BadgeState } from '@/app/components/base/badge/index' import { buildIntegrationPath } from '@/app/components/integrations/routes' import Link from '@/next/link' import Card from '../../card' import { PluginCategoryEnum } from '../../types' import { pluginManifestInMarketToPluginProps, pluginManifestToCardPluginProps } from '../utils' type Props = Readonly<{ payload?: Plugin | PluginDeclaration | PluginManifestInMarket | null isMarketPayload?: boolean isFailed: boolean errMsg?: string | null installContextCategory?: PluginCategoryEnum onCancel: () => void }> type CategoryTarget = { labelKey: 'menus.tools' | 'settings.agentStrategy' | 'settings.dataSource' | 'settings.extension' | 'settings.provider' | 'settings.trigger' path: string } const categoryTargetMap: Partial> = { [PluginCategoryEnum.model]: { labelKey: 'settings.provider', path: buildIntegrationPath('provider'), }, [PluginCategoryEnum.tool]: { labelKey: 'menus.tools', path: buildIntegrationPath('builtin'), }, [PluginCategoryEnum.datasource]: { labelKey: 'settings.dataSource', path: buildIntegrationPath('data-source'), }, [PluginCategoryEnum.trigger]: { labelKey: 'settings.trigger', path: buildIntegrationPath('trigger'), }, [PluginCategoryEnum.agent]: { labelKey: 'settings.agentStrategy', path: buildIntegrationPath('agent-strategy'), }, [PluginCategoryEnum.extension]: { labelKey: 'settings.extension', path: buildIntegrationPath('extension'), }, } const Installed: FC = ({ payload, isMarketPayload, isFailed, errMsg, installContextCategory, onCancel, }) => { const { t } = useTranslation('plugin') const installedCategory = payload?.category const categoryTarget = !isFailed && installContextCategory && installedCategory !== installContextCategory ? categoryTargetMap[installedCategory as PluginCategoryEnum] : undefined const categoryName = categoryTarget ? t(categoryTarget.labelKey, { ns: 'common' }) : '' const handleClose = () => { onCancel() } return ( <>

{(isFailed && errMsg) ? errMsg : categoryTarget ? ( , }} values={{ categoryName }} /> ) : t(`installModal.${isFailed ? 'installFailedDesc' : 'installedSuccessfullyDesc'}`, { ns: 'plugin' })}

{payload && (
{(payload as PluginDeclaration).version || (payload as PluginManifestInMarket).latest_version}} compact />
)}
{/* Action Buttons */}
) } export default React.memo(Installed)