interface FileHandlerProps { setUploadedFile: (file: File | null) => void; setSourceText: (text: string) => void; setFileContent: (content: string) => void; setError: (error: string | null) => void; setIsLoadingFile?: (loading: boolean) => void; // Ajouter cette propriété } export const useFileHandler = ({ setUploadedFile, setSourceText, setFileContent, setError, setIsLoadingFile, }: FileHandlerProps) => { const handleFileChange = async ( event: React.ChangeEvent ) => { const file = event.target.files?.[0]; if (!file) return; setUploadedFile(file); setError(null); setSourceText(""); setFileContent(""); if (file.type === "text/plain") { try { const text = await file.text(); setFileContent(text); setSourceText(text); } catch { setError("Erreur lors de la lecture du fichier texte"); setUploadedFile(null); } } else if (file.type === "application/pdf") { // Activer le loader immédiatement pour les PDF setIsLoadingFile?.(true); try { const formData = new FormData(); formData.append("file", file); const response = await fetch("/api/process-document", { method: "POST", body: formData, }); if (!response.ok) { throw new Error(`Erreur HTTP: ${response.status}`); } const data = await response.json(); if (data.error) { throw new Error(data.error); } const extractedText = data.text || data.anonymizedText || ""; if (!extractedText || extractedText.trim().length === 0) { throw new Error( "Le fichier PDF ne contient pas de texte extractible" ); } setFileContent(extractedText); setSourceText(extractedText); } catch (error) { console.error("Erreur PDF:", error); setError( error instanceof Error ? error.message : "Erreur lors de la lecture du fichier PDF" ); setUploadedFile(null); setFileContent(""); setSourceText(""); } finally { // Désactiver le loader une fois terminé setIsLoadingFile?.(false); } } else { setError( "Type de fichier non supporté. Veuillez utiliser un fichier TXT ou PDF." ); setUploadedFile(null); } }; return { handleFileChange }; };