Add live refresh for game members and metadata
Implemented a useEffect to periodically refresh game member and winner metadata every 2.5 seconds. This ensures new joiners are visible without requiring a page reload, balancing performance and usability.
This commit is contained in:
@@ -131,6 +131,36 @@ export default function App() {
|
|||||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||||
}, [gameId]);
|
}, [gameId]);
|
||||||
|
|
||||||
|
// ✅ Live refresh (Members/Meta) – damit neue Joiner ohne Reload sichtbar sind
|
||||||
|
// Für 5–6 Spieler reicht 2.5s völlig, ist "live genug" und schont Backend.
|
||||||
|
useEffect(() => {
|
||||||
|
if (!me || !gameId) return;
|
||||||
|
|
||||||
|
let alive = true;
|
||||||
|
|
||||||
|
const tick = async () => {
|
||||||
|
try {
|
||||||
|
await loadGameMeta(); // refresh members + winner meta
|
||||||
|
} catch {
|
||||||
|
// ignore
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// sofort einmal ziehen
|
||||||
|
tick();
|
||||||
|
|
||||||
|
const id = setInterval(() => {
|
||||||
|
if (!alive) return;
|
||||||
|
tick();
|
||||||
|
}, 2500);
|
||||||
|
|
||||||
|
return () => {
|
||||||
|
alive = false;
|
||||||
|
clearInterval(id);
|
||||||
|
};
|
||||||
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||||
|
}, [me?.id, gameId]);
|
||||||
|
|
||||||
// ===== Auth actions =====
|
// ===== Auth actions =====
|
||||||
const doLogin = async () => {
|
const doLogin = async () => {
|
||||||
await api("/auth/login", {
|
await api("/auth/login", {
|
||||||
|
|||||||
Reference in New Issue
Block a user