Improve winner celebration logic in game meta updates

Adjusted the logic to ensure celebrations trigger only when the winner ID changes and not on initial meta loads. Also added a reset check to prevent celebrations when the winner ID becomes empty.
This commit is contained in:
2026-02-06 17:09:43 +01:00
parent 3a9da788e5
commit 61c7ed6ffe

View File

@@ -240,22 +240,24 @@ export default function App() {
// eslint-disable-next-line react-hooks/exhaustive-deps // eslint-disable-next-line react-hooks/exhaustive-deps
}, [me?.id, gameId]); }, [me?.id, gameId]);
// ✅ Winner Celebration Trigger:
// - beim ersten Load eines Spiels NICHT feiern
// - feiern nur, wenn winner_user_id sich danach ändert (Host speichert)
useEffect(() => { useEffect(() => {
// wid kann auch "" sein (kein Sieger)
const wid = gameMeta?.winner_user_id ? String(gameMeta.winner_user_id) : ""; const wid = gameMeta?.winner_user_id ? String(gameMeta.winner_user_id) : "";
if (!wid) return;
// Baseline beim ersten Meta-Load setzen egal ob Winner existiert oder nicht
if (!winnerBaselineRef.current) { if (!winnerBaselineRef.current) {
winnerBaselineRef.current = true; winnerBaselineRef.current = true;
lastWinnerIdRef.current = wid; lastWinnerIdRef.current = wid; // kann "" sein
return; return;
} }
// Nur reagieren, wenn sich wid ändert
if (lastWinnerIdRef.current !== wid) { if (lastWinnerIdRef.current !== wid) {
lastWinnerIdRef.current = wid; lastWinnerIdRef.current = wid;
// wenn wid leer wird (reset), nicht feiern
if (!wid) return;
const name = const name =
(gameMeta?.winner_display_name || "").trim() || (gameMeta?.winner_display_name || "").trim() ||
(gameMeta?.winner_email || "").trim() || (gameMeta?.winner_email || "").trim() ||
@@ -266,6 +268,7 @@ export default function App() {
} }
}, [gameMeta?.winner_user_id, gameMeta?.winner_display_name, gameMeta?.winner_email]); }, [gameMeta?.winner_user_id, gameMeta?.winner_display_name, gameMeta?.winner_email]);
// ===== Auth actions ===== // ===== Auth actions =====
const doLogin = async () => { const doLogin = async () => {
await api("/auth/login", { await api("/auth/login", {