import { Button } from '@langgenius/dify-ui/button' import { cn } from '@langgenius/dify-ui/cn' import { RiAddLine, RiBookOpenLine, RiCloseLine } from '@remixicon/react' import { useQuery, useQueryClient } from '@tanstack/react-query' import * as React from 'react' import { useTranslation } from 'react-i18next' import ActionButton from '@/app/components/base/action-button' import Loading from '@/app/components/base/loading' import { useDocLink } from '@/context/i18n' import { useModalContext } from '@/context/modal-context' import { consoleQuery } from '@/service/client' import ExternalKnowledgeAPICard from '../external-knowledge-api-card' type ExternalAPIPanelProps = { canManageExternalKnowledgeApi: boolean onClose: () => void } const ExternalAPIPanel: React.FC = ({ canManageExternalKnowledgeApi, onClose, }) => { const { t } = useTranslation() const docLink = useDocLink() const { setShowExternalKnowledgeAPIModal } = useModalContext() const queryClient = useQueryClient() const externalKnowledgeApiQueryOptions = consoleQuery.datasets.externalKnowledgeApi.get.queryOptions({ input: {} }) const { data, isLoading } = useQuery(externalKnowledgeApiQueryOptions) const externalKnowledgeApiList = data?.data ?? [] const handleOpenExternalAPIModal = () => { if (!canManageExternalKnowledgeApi) return setShowExternalKnowledgeAPIModal({ payload: { name: '', settings: { endpoint: '', api_key: '' } }, datasetBindings: [], onSaveCallback: () => { void queryClient.invalidateQueries({ queryKey: externalKnowledgeApiQueryOptions.queryKey, }) }, isEditMode: false, }) } return (
{t(($) => $.externalAPIPanelTitle, { ns: 'dataset' })}
{t(($) => $.externalAPIPanelDescription, { ns: 'dataset' })}
{t(($) => $.externalAPIPanelDocumentation, { ns: 'dataset' })}
onClose()}>
{canManageExternalKnowledgeApi && (
)}
{isLoading ? ( ) : ( externalKnowledgeApiList.map((api) => ( )) )}
) } export default ExternalAPIPanel