From 4dd63a6818dc853fafbe793516350ca194f0520c Mon Sep 17 00:00:00 2001 From: Ronny Date: Sun, 12 Apr 2026 16:02:42 +0200 Subject: [PATCH] fix: move useEffect before early returns (React hooks rule violation) --- frontend/src/pages/DashboardPage.tsx | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/frontend/src/pages/DashboardPage.tsx b/frontend/src/pages/DashboardPage.tsx index ea66853..cfdb255 100644 --- a/frontend/src/pages/DashboardPage.tsx +++ b/frontend/src/pages/DashboardPage.tsx @@ -44,6 +44,14 @@ export default function DashboardPage(_props: Props) { .catch(() => { setError(true); setLoading(false); }); }, []); + // Keep stored streak up to date (hook must be before early returns) + const STREAK_KEY = 'tippspiel_last_streak'; + useEffect(() => { + if (data && data.stats.streak > 0) { + localStorage.setItem(STREAK_KEY, String(data.stats.streak)); + } + }, [data]); + if (loading) return
Laden...
; if (error || !data) return
Dashboard konnte nicht geladen werden.
; @@ -53,17 +61,9 @@ export default function DashboardPage(_props: Props) { const rankDiff = lastRank > 0 && stats.rank !== null ? lastRank - stats.rank : 0; // Streak break detection via localStorage - const STREAK_KEY = 'tippspiel_last_streak'; const lastStreak = parseInt(localStorage.getItem(STREAK_KEY) || '0'); const streakBroken = lastStreak >= 3 && stats.streak === 0; - // Keep stored streak up to date when active - useEffect(() => { - if (stats.streak > 0) { - localStorage.setItem(STREAK_KEY, String(stats.streak)); - } - }, [stats.streak]); - return (
{/* Hero Card */}