From f29625c6bc226f625a54275290ce49bb7f2e316f Mon Sep 17 00:00:00 2001 From: syoul Date: Mon, 23 Mar 2026 23:24:26 +0100 Subject: [PATCH] =?UTF-8?q?feat:=20clic=20Animer=20d=C3=A9marre=20la=20lec?= =?UTF-8?q?ture=20automatiquement=20en=20vitesse=20=C3=971?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - activate() appelle maintenant setSpeed(1) + setPlaying(true) en plus de setActive(true) - L'effet de reset ne stoppe playing que lors d'une désactivation (active=false), pas lors d'une activation, pour ne pas annuler le setPlaying(true) ci-dessus Co-Authored-By: Claude Sonnet 4.6 --- src/hooks/useAnimation.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/hooks/useAnimation.ts b/src/hooks/useAnimation.ts index 0738b1a..ba273e8 100644 --- a/src/hooks/useAnimation.ts +++ b/src/hooks/useAnimation.ts @@ -64,10 +64,12 @@ export function useAnimation(transactions: Transaction[], periodDays: number) { const frames = useMemo(() => buildFrames(periodDays), [periodDays]); - // Reset cursor and playback when period or activation changes + // Reset cursor when period or activation changes. + // Stop playback only on deactivation — not on activation, so activate() can + // start playing immediately without being overridden by this effect. useEffect(() => { setCurrentIndex(0); - setPlaying(false); + if (!active) setPlaying(false); }, [periodDays, active]); // Auto-advance: one step every (2000 / speed) ms @@ -95,7 +97,7 @@ export function useAnimation(transactions: Transaction[], periodDays: number) { return { active, - activate: () => setActive(true), + activate: () => { setActive(true); setSpeed(1); setPlaying(true); }, deactivate: () => { setActive(false); }, playing, play: () => setPlaying(true),