From a77123e07fd40215e962c170957dce5cea7b5b2a Mon Sep 17 00:00:00 2001 From: Manus Date: Fri, 30 Jan 2026 09:54:14 -0500 Subject: [PATCH] =?UTF-8?q?Checkpoint:=20Solution=20finale=20pour=20le=20f?= =?UTF-8?q?eedback=20instantan=C3=A9=20lors=20de=20l'upload=20d'attestatio?= =?UTF-8?q?ns=20:=20affichage=20imm=C3=A9diat=20du=20nom=20du=20fichier=20?= =?UTF-8?q?s=C3=A9lectionn=C3=A9=20dans=20la=20bo=C3=AEte=20de=20dialogue?= =?UTF-8?q?=20d=C3=A8s=20la=20s=C3=A9lection.=20Le=20nom=20reste=20visible?= =?UTF-8?q?=20pendant=20toute=20la=20dur=C3=A9e=20de=20l'upload=20avec=20l?= =?UTF-8?q?a=20barre=20de=20progression.=20Cette=20approche=20simple=20et?= =?UTF-8?q?=20fiable=20r=C3=A9sout=20d=C3=A9finitivement=20le=20probl?= =?UTF-8?q?=C3=A8me=20de=20latence=20en=20donnant=20un=20feedback=20visuel?= =?UTF-8?q?=20instantan=C3=A9=20=C3=A0=20l'utilisateur.=20D=C3=A9ploy?= =?UTF-8?q?=C3=A9=20sur=20le=20VPS=20de=20production.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/src/pages/AdminGestionAttestations.tsx | 12 ++++++++++++ todo.md | 2 ++ 2 files changed, 14 insertions(+) diff --git a/client/src/pages/AdminGestionAttestations.tsx b/client/src/pages/AdminGestionAttestations.tsx index 647ea94..df12221 100644 --- a/client/src/pages/AdminGestionAttestations.tsx +++ b/client/src/pages/AdminGestionAttestations.tsx @@ -27,6 +27,7 @@ function UploadAttestationDialog({ }) { const [uploading, setUploading] = useState(false); const [uploadProgress, setUploadProgress] = useState(0); + const [selectedFileName, setSelectedFileName] = useState(null); const [fileData, setFileData] = useState<{ nomFichier: string; urlFichier: string; @@ -40,6 +41,7 @@ function UploadAttestationDialog({ if (open) { setUploading(false); setUploadProgress(0); + setSelectedFileName(null); setFileData(null); } }, [open]); @@ -128,6 +130,11 @@ function UploadAttestationDialog({

Upload en cours...

+ {selectedFileName && ( +

+ {selectedFileName} +

+ )}
Progression @@ -184,15 +191,20 @@ function UploadAttestationDialog({ const file = e.target.files?.[0]; if (!file) return; + // Afficher IMMÉDIATEMENT le nom du fichier sélectionné + setSelectedFileName(file.name); + // Validation du type de fichier if (file.type !== 'application/pdf') { toast.error('Seuls les fichiers PDF sont acceptés'); + setSelectedFileName(null); return; } // Validation de la taille du fichier if (file.size > 10 * 1024 * 1024) { toast.error('Le fichier ne doit pas dépasser 10 Mo'); + setSelectedFileName(null); return; } diff --git a/todo.md b/todo.md index fd297f4..3e3fd73 100644 --- a/todo.md +++ b/todo.md @@ -1478,3 +1478,5 @@ - [x] Restructurer le flux d'upload avec useEffect pour affichage immédiat - [x] Corriger la latence avec requestAnimationFrame pour affichage avant fetch bloquant + +- [x] Afficher immédiatement le nom du fichier sélectionné dans la boîte de dialogue