import { useState } from "react"; interface FileUploadProps { isFileUploaded: boolean; setIsFileUploaded: (isFileUploaded: boolean) => void; } function FileUpload({ isFileUploaded, setIsFileUploaded }: FileUploadProps) { const [error, setError] = useState(""); const [isLoading, setIsLoading] = useState(false); const onSubmitFile = async (e: React.FormEvent) => { e.preventDefault(); const form = e.currentTarget; const formData = new FormData(form); const file = formData.get("file") as File; if (!file) { setError("Please choose a file"); return; } // if file is not a text or pdf file, set error if (!file.name.endsWith(".txt") && !file.name.endsWith(".pdf")) { setError("Please choose a text or PDF file"); return; } setIsLoading(true); try { const response = await fetch(form.action, { method: "POST", body: formData, }); if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`); } const data = await response.json(); if (data.session_id) { sessionStorage.setItem("session_id", data.session_id); } console.log("response", response); setIsFileUploaded(true); } catch (error) { setError("Error uploading file"); console.error("Error uploading file", error); } finally { form.reset(); setIsLoading(false); } }; const onChangeFile = (e: React.ChangeEvent) => { e.currentTarget.form?.requestSubmit(); }; return !isFileUploaded ? ( <> {isLoading && (

Loading...

)} {!isLoading && (
{error &&

{error}

}

Drop a .pdf or .txt
or click to upload

)} ) : null; } export { FileUpload };