muryshev's picture
init
79278ec
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>
);
};