From b3b808145ce71d4ffc1bf1ef50fd8ac2ec0e5622 Mon Sep 17 00:00:00 2001 From: Manus Date: Sun, 25 Jan 2026 15:20:13 -0500 Subject: [PATCH] =?UTF-8?q?Checkpoint:=20Ajout=20d'une=20confirmation=20vi?= =?UTF-8?q?suelle=20am=C3=A9lior=C3=A9e=20apr=C3=A8s=20=C3=A9margement=20r?= =?UTF-8?q?=C3=A9ussi=20:=20animations=20fluides,=20heure=20d'enregistreme?= =?UTF-8?q?nt=20pr=C3=A9cise=20et=20design=20moderne?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/src/pages/EmargementScan.tsx | 45 ++++++++++++++++++++++++----- todo.md | 1 + 2 files changed, 38 insertions(+), 8 deletions(-) diff --git a/client/src/pages/EmargementScan.tsx b/client/src/pages/EmargementScan.tsx index 13e2920..448e627 100644 --- a/client/src/pages/EmargementScan.tsx +++ b/client/src/pages/EmargementScan.tsx @@ -22,6 +22,7 @@ export default function EmargementScan() { const [selectedDateId, setSelectedDateId] = useState(null); const [selectedPeriode, setSelectedPeriode] = useState<"matin" | "apres_midi">("matin"); const [success, setSuccess] = useState(false); + const [heureEnregistrement, setHeureEnregistrement] = useState(null); const [error, setError] = useState(null); // Récupérer l'apprenant par email @@ -42,6 +43,8 @@ export default function EmargementScan() { // Valider la présence const { mutate: validerPresence, isPending: validating } = trpc.presences.valider.useMutation({ onSuccess: () => { + const now = new Date(); + setHeureEnregistrement(now); setSuccess(true); toast.success("Présence validée avec succès !"); }, @@ -81,25 +84,51 @@ export default function EmargementScan() { if (success) { return ( -
- +
+ -
- +
+
- Présence validée ! - + + Présence validée ! + + Votre présence a été enregistrée avec succès - -

+ + {heureEnregistrement && ( +

+

+ 🕒 Heure d'enregistrement +

+

+ {heureEnregistrement.toLocaleTimeString("fr-FR", { + hour: "2-digit", + minute: "2-digit", + second: "2-digit", + })} +

+

+ {heureEnregistrement.toLocaleDateString("fr-FR", { + weekday: "long", + year: "numeric", + month: "long", + day: "numeric", + })} +

+
+ )} +

Merci d'avoir confirmé votre présence. Vous pouvez maintenant fermer cette page.