import { apiInterceptors, importFlow } from '@/client/api'; import CanvasWrapper from '@/pages/construct/flow/canvas/index'; import { UploadOutlined } from '@ant-design/icons'; import { Button, Form, GetProp, Modal, Radio, Upload, UploadFile, UploadProps, message } from 'antd'; import { useEffect, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { Edge, Node } from 'reactflow'; type Props = { isImportModalOpen: boolean; setNodes: React.Dispatch[]>>; setEdges: React.Dispatch[]>>; setIsImportFlowModalOpen: (value: boolean) => void; }; type FileType = Parameters>[0]; export const ImportFlowModal: React.FC = ({ isImportModalOpen, setIsImportFlowModalOpen }) => { const { t } = useTranslation(); const [form] = Form.useForm(); const [messageApi, contextHolder] = message.useMessage(); const [fileList, setFileList] = useState([]); useEffect(() => { if (isImportModalOpen) { form.resetFields(); setFileList([]); } }, [isImportModalOpen, form]); const onFlowImport = async (values: any) => { values.file = values.file?.[0]; const formData: any = new FormData(); fileList.forEach(file => { formData.append('file', file as FileType); formData.append('save_flow', values.save_flow); }); const [, , res] = await apiInterceptors(importFlow(formData)); if (res?.success) { messageApi.success(t('Import_Flow_Success')); localStorage.setItem('importFlowData', JSON.stringify(res?.data)); CanvasWrapper(); } else if (res?.err_msg) { messageApi.error(res?.err_msg); } setIsImportFlowModalOpen(false); }; const props: UploadProps = { onRemove: (file: any) => { const index = fileList.indexOf(file); const newFileList = fileList.slice(); newFileList.splice(index, 1); setFileList(newFileList); }, beforeUpload: (file: any) => { setFileList([...fileList, file]); return false; }, fileList, }; return ( <> setIsImportFlowModalOpen(false)} footer={[ , , ]} >
(Array.isArray(e) ? e : e && e.fileList)} rules={[{ required: true, message: 'Please upload a file' }]} >
{contextHolder} ); };