import React, { useCallback, useState } from 'react' import { useTranslation } from 'react-i18next' import { ApiAggregate } from '@/app/components/base/icons/src/vender/knowledge' import Indicator from '@/app/components/header/indicator' import Switch from '@/app/components/base/switch' import { useSelector as useAppContextSelector } from '@/context/app-context' import cn from '@/utils/classnames' import CopyFeedback from '@/app/components/base/copy-feedback' import Button from '@/app/components/base/button' import { RiBookOpenLine, RiKey2Line } from '@remixicon/react' import { useDisableDatasetServiceApi, useEnableDatasetServiceApi } from '@/service/knowledge/use-dataset' import { useDatasetDetailContextWithSelector } from '@/context/dataset-detail' import Link from 'next/link' import SecretKeyModal from '@/app/components/develop/secret-key/secret-key-modal' import { useDatasetApiAccessUrl } from '@/hooks/use-api-access-url' type CardProps = { apiEnabled: boolean apiBaseUrl: string } const Card = ({ apiEnabled, apiBaseUrl, }: CardProps) => { const { t } = useTranslation() const datasetId = useDatasetDetailContextWithSelector(state => state.dataset?.id) const mutateDatasetRes = useDatasetDetailContextWithSelector(state => state.mutateDatasetRes) const { mutateAsync: enableDatasetServiceApi } = useEnableDatasetServiceApi() const { mutateAsync: disableDatasetServiceApi } = useDisableDatasetServiceApi() const [isSecretKeyModalVisible, setIsSecretKeyModalVisible] = useState(false) const isCurrentWorkspaceManager = useAppContextSelector(state => state.isCurrentWorkspaceManager) const apiReferenceUrl = useDatasetApiAccessUrl() const onToggle = useCallback(async (state: boolean) => { let result: 'success' | 'fail' if (state) result = (await enableDatasetServiceApi(datasetId ?? '')).result else result = (await disableDatasetServiceApi(datasetId ?? '')).result if (result === 'success') mutateDatasetRes?.() }, [datasetId, enableDatasetServiceApi, disableDatasetServiceApi]) const handleOpenSecretKeyModal = useCallback(() => { setIsSecretKeyModalVisible(true) }, []) const handleCloseSecretKeyModal = useCallback(() => { setIsSecretKeyModalVisible(false) }, []) return (
{t('dataset.serviceApi.card.title')}
{apiEnabled ? t('dataset.serviceApi.enabled') : t('dataset.serviceApi.disabled')}
{t('dataset.serviceApi.card.endpoint')}
{apiBaseUrl}
{/* Actions */}
) } export default React.memo(Card)