import React, { useState } from 'react'; import axios from 'axios'; import { Button } from './ui/button'; import { Input } from './ui/input'; const FileUpload = ({ sessionId, onUploadSuccess }) => { const [file, setFile] = useState(null); const [isUploading, setIsUploading] = useState(false); const [errorMessage, setErrorMessage] = useState(''); const [progress, setProgress] = useState(0); const handleFileChange = (e) => { const selectedFile = e.target.files[0]; setFile(selectedFile); setErrorMessage(''); }; const handleUpload = async (e) => { e.preventDefault(); if (!file) { setErrorMessage('Please select a file to upload'); return; } setIsUploading(true); setProgress(0); setErrorMessage(''); const formData = new FormData(); formData.append('file', file); formData.append('session_id', sessionId); try { const response = await axios.post('/upload', formData, { headers: { 'Content-Type': 'multipart/form-data' }, onUploadProgress: (progressEvent) => { const percentCompleted = Math.round((progressEvent.loaded * 100) / progressEvent.total); setProgress(percentCompleted); } }); if (response.data.status === 'success') { setIsUploading(false); onUploadSuccess( file.name, response.data.document_description || 'No description available', response.data.suggested_questions || [] ); } else { setIsUploading(false); setErrorMessage(response.data.message || 'Upload failed'); } } catch (error) { setIsUploading(false); setErrorMessage(error.response?.data?.message || 'Error uploading file'); console.error('Error:', error); } }; return (
Upload a document to start chatting with AI about its contents ✨