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> | |
| ); | |
| }; | |