Spaces:
Running
Running
| import "../styles.scss"; | |
| import { FC, useCallback, useState } from "react"; | |
| import { useAddFileToDataset, useCreateDatasetsDraft } from "@/api/documents/hooks"; | |
| import { AddDocumentFormProps } from "./AddDocumentForm.interface"; | |
| import Button from "@/components/generics/button/Button"; | |
| import { GoFile } from "react-icons/go"; | |
| export const AddDocumentForm: FC<AddDocumentFormProps> = ({ datasetId, isDraft, closeModal, setSearchParams }) => { | |
| const [file, setFile] = useState<File | undefined>(); | |
| const { mutate: addFileToDatasetFn } = useAddFileToDataset(); | |
| const { mutate: createDatasetsDraftFn } = useCreateDatasetsDraft(); | |
| const handleUpload = useCallback(() => { | |
| if (file) { | |
| if (!isDraft) { | |
| createDatasetsDraftFn(datasetId, { | |
| onSuccess: (newDatasetData) => { | |
| const formData = new FormData(); | |
| formData.append("file", file); | |
| addFileToDatasetFn( | |
| { | |
| id: newDatasetData.id, | |
| data: formData, | |
| }, | |
| { | |
| onSuccess: () => { | |
| closeModal(); | |
| setSearchParams({ datasetId: newDatasetData.id.toString() }); | |
| }, | |
| } | |
| ); | |
| }, | |
| }); | |
| } else { | |
| const formData = new FormData(); | |
| formData.append("file", file); | |
| addFileToDatasetFn( | |
| { | |
| id: datasetId, | |
| data: formData, | |
| }, | |
| { onSuccess: closeModal } | |
| ); | |
| } | |
| } | |
| }, [addFileToDatasetFn, closeModal, createDatasetsDraftFn, datasetId, file, isDraft, setSearchParams]); | |
| return ( | |
| <div> | |
| <label className="input-file"> | |
| <input type="file" name="file" onChange={(file) => setFile(file.target.files?.[0])} accept=".xml, .docx" /> | |
| <span>Выберите файл формата xml или docx</span> | |
| </label> | |
| <div className="file-name"> | |
| {file && <GoFile />} | |
| {file?.name} | |
| </div> | |
| <div className="actions"> | |
| <Button name="Продолжить" onClick={handleUpload} /> | |
| </div> | |
| </div> | |
| ); | |
| }; | |