Spaces:
Running
Running
File size: 2,138 Bytes
79278ec |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
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>
);
};
|