From cf886a1adb751d850bc36151e7fb6679972d4cf5 Mon Sep 17 00:00:00 2001 From: Manus Date: Sat, 14 Mar 2026 19:13:45 -0400 Subject: [PATCH] =?UTF-8?q?Checkpoint:=20Correction=20du=20probl=C3=A8me?= =?UTF-8?q?=20d'affichage=20du=20canvas=20de=20signature=20:=20utilisation?= =?UTF-8?q?=20d'une=20callback=20ref=20(initCanvas)=20au=20lieu=20d'un=20u?= =?UTF-8?q?seEffect=20conditionnel=20pour=20initialiser=20le=20fond=20blan?= =?UTF-8?q?c=20du=20canvas=20d=C3=A8s=20son=20montage=20dans=20le=20DOM?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/src/pages/Settings.tsx | 11 +++++------ todo.md | 6 +++++- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/client/src/pages/Settings.tsx b/client/src/pages/Settings.tsx index 4d78529..903e78c 100644 --- a/client/src/pages/Settings.tsx +++ b/client/src/pages/Settings.tsx @@ -46,10 +46,9 @@ function SignaturesSection() { const isDrawingRef = useRef(false); const lastPosRef = useRef<{ x: number; y: number } | null>(null); - // Initialize canvas - useEffect(() => { - if (mode !== "draw") return; - const canvas = canvasRef.current; + // Initialize canvas via callback ref — fires as soon as the element mounts + const initCanvas = useCallback((canvas: HTMLCanvasElement | null) => { + (canvasRef as React.MutableRefObject).current = canvas; if (!canvas) return; const ctx = canvas.getContext("2d"); if (!ctx) return; @@ -59,7 +58,7 @@ function SignaturesSection() { ctx.lineWidth = 2; ctx.lineCap = "round"; ctx.lineJoin = "round"; - }, [mode]); + }, []); const getPos = useCallback((e: React.MouseEvent | React.TouchEvent, canvas: HTMLCanvasElement) => { const rect = canvas.getBoundingClientRect(); @@ -269,7 +268,7 @@ function SignaturesSection() {