import React, { useState } from 'react'; import MyModal from '@fastgpt/web/components/common/MyModal'; import { useTranslation } from 'next-i18next'; import { Box, Button, HStack, ModalBody, ModalFooter, VStack } from '@chakra-ui/react'; import FileSelector, { type SelectFileItemType } from '../components/FileSelector'; import MyIcon from '@fastgpt/web/components/common/Icon'; import MyIconButton from '@fastgpt/web/components/common/Icon/button'; import { postBackupDatasetCollection } from '@/web/core/dataset/api'; import { useRequest2 } from '@fastgpt/web/hooks/useRequest'; import { DatasetPageContext } from '@/web/core/dataset/context/datasetPageContext'; import { useContextSelector } from 'use-context-selector'; import LightTip from '@fastgpt/web/components/common/LightTip'; const BackupImportModal = ({ onFinish, onClose }: { onFinish: () => void; onClose: () => void; }) => { const { t } = useTranslation(); const datasetId = useContextSelector(DatasetPageContext, (v) => v.datasetId); const [selectFiles, setSelectFiles] = useState([]); const [percent, setPercent] = useState(0); const { runAsync: onBackupImport, loading: isBackupLoading } = useRequest2( async () => { await postBackupDatasetCollection({ datasetId, file: selectFiles[0].file, percentListen: setPercent }); }, { onSuccess() { onFinish(); onClose(); }, successToast: t('dataset:backup_dataset_success') } ); return ( setSelectFiles(e)} /> {/* File render */} {selectFiles.length > 0 && ( {selectFiles.map((item, index) => ( {item.name} {item.size} { setSelectFiles(selectFiles.filter((_, i) => i !== index)); }} /> ))} )} ); }; export default BackupImportModal;