fix: move useEffect before early returns (React hooks rule violation)

This commit is contained in:
Ronny
2026-04-12 16:02:42 +02:00
parent fe777a2bab
commit d38f650261
+8 -8
View File
@@ -44,6 +44,14 @@ export default function DashboardPage(_props: Props) {
.catch(() => { setError(true); setLoading(false); }); .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 <div className={styles.loading}>Laden...</div>; if (loading) return <div className={styles.loading}>Laden...</div>;
if (error || !data) return <div className={styles.error}>Dashboard konnte nicht geladen werden.</div>; if (error || !data) return <div className={styles.error}>Dashboard konnte nicht geladen werden.</div>;
@@ -53,17 +61,9 @@ export default function DashboardPage(_props: Props) {
const rankDiff = lastRank > 0 && stats.rank !== null ? lastRank - stats.rank : 0; const rankDiff = lastRank > 0 && stats.rank !== null ? lastRank - stats.rank : 0;
// Streak break detection via localStorage // Streak break detection via localStorage
const STREAK_KEY = 'tippspiel_last_streak';
const lastStreak = parseInt(localStorage.getItem(STREAK_KEY) || '0'); const lastStreak = parseInt(localStorage.getItem(STREAK_KEY) || '0');
const streakBroken = lastStreak >= 3 && stats.streak === 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 ( return (
<div className={styles.dashboard}> <div className={styles.dashboard}>
{/* Hero Card */} {/* Hero Card */}