import { ChangeEvent, useRef, useState } from "react"; import { Button } from "@/components/ui/button"; import { duplicateCheck, uploadFile } from "@/lib/upload-utils"; import { AnimatePresence, motion } from "motion/react"; import { AnimatedProviderSteps } from "@/app/onboarding/components/animated-provider-steps"; interface OnboardingUploadProps { onComplete: () => void; } const OnboardingUpload = ({ onComplete }: OnboardingUploadProps) => { const fileInputRef = useRef(null); const [isUploading, setIsUploading] = useState(false); const [currentStep, setCurrentStep] = useState(null); const STEP_LIST = [ "Analyzing your document", "Ingesting your document", ]; const resetFileInput = () => { if (fileInputRef.current) { fileInputRef.current.value = ""; } }; const handleUploadClick = () => { fileInputRef.current?.click(); }; const performUpload = async (file: File, replace = false) => { setIsUploading(true); try { setCurrentStep(1); await uploadFile(file, replace); console.log("Document uploaded successfully"); } catch (error) { console.error("Upload failed", (error as Error).message); } finally { setIsUploading(false); await new Promise(resolve => setTimeout(resolve, 1000)); setCurrentStep(STEP_LIST.length); await new Promise(resolve => setTimeout(resolve, 500)); onComplete(); } }; const handleFileChange = async (event: ChangeEvent) => { const selectedFile = event.target.files?.[0]; if (!selectedFile) { resetFileInput(); return; } try { setCurrentStep(0); const duplicateInfo = await duplicateCheck(selectedFile); if (duplicateInfo.exists) { console.log("Duplicate file detected"); return; } await performUpload(selectedFile, false); } catch (error) { console.error("Unable to prepare file for upload", (error as Error).message); } finally { resetFileInput(); } }; return ( {currentStep === null ? ( ) : ( )} ) } export default OnboardingUpload;