'use client' import { Dispatch, SetStateAction, useEffect, useState } from 'react' import useSWR from 'swr' import { useContext } from 'use-context-selector' import { BookOpenIcon } from '@heroicons/react/24/outline' import { useTranslation } from 'react-i18next' import { ToastContext } from '@/app/components/base/toast' import PermissionsRadio from '../permissions-radio' import IndexMethodRadio from '../index-method-radio' import Button from '@/app/components/base/button' import { updateDatasetSetting, fetchDataDetail } from '@/service/datasets' import { DataSet } from '@/models/datasets' const rowClass = ` flex justify-between py-4 ` const labelClass = ` flex items-center w-[168px] h-9 ` const inputClass = ` w-[480px] px-3 bg-gray-100 text-sm text-gray-800 rounded-lg outline-none appearance-none ` const useInitialValue = (depend: T, dispatch: Dispatch>) => { useEffect(() => { dispatch(depend) }, [depend]) } type Props = { datasetId: string } const Form = ({ datasetId }: Props) => { const { t } = useTranslation() const { notify } = useContext(ToastContext) const { data: currentDataset, mutate: mutateDatasets } = useSWR(datasetId, fetchDataDetail) const [loading, setLoading] = useState(false) const [name, setName] = useState(currentDataset?.name ?? '') const [description, setDescription] = useState(currentDataset?.description ?? '') const [permission, setPermission] = useState(currentDataset?.permission) const [indexMethod, setIndexMethod] = useState(currentDataset?.indexing_technique) const handleSave = async () => { if (loading) return if (!name?.trim()) { notify({ type: 'error', message: t('datasetSettings.form.nameError') }) return } try { setLoading(true) await updateDatasetSetting({ datasetId: currentDataset!.id, body: { name, description, permission, indexing_technique: indexMethod } }) notify({ type: 'success', message: t('common.actionMsg.modifiedSuccessfully') }) await mutateDatasets() } catch (e) { notify({ type: 'error', message: t('common.actionMsg.modificationFailed') }) } finally { setLoading(false) } } useInitialValue(currentDataset?.name ?? '', setName) useInitialValue(currentDataset?.description ?? '', setDescription) useInitialValue(currentDataset?.permission, setPermission) useInitialValue(currentDataset?.indexing_technique, setIndexMethod) return (
{t('datasetSettings.form.name')}
setName(e.target.value)} />
{t('datasetSettings.form.desc')}