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