Merge feature/veto-timer in main
This commit is contained in:
commit
656bfbaadf
5 files changed
+73
No files matched your search
@@ -10,6 +10,7 @@ export default function VetoBoard({ state, viewer, act, busy, compact = false })
|
||||
const { current } = veto;
|
||||
const [selected, setSelected] = useState(null);
|
||||
useEffect(() => setSelected(null), [current?.index]);
|
||||
const left = useCountdown(veto.remainingMs);
|
||||
|
||||
const mapsById = Object.fromEntries(state.maps.map((m) => [m.id, m]));
|
||||
const yourTurn = !!current && viewer.isCaptain && viewer.team === current.team;
|
||||
@@ -38,6 +39,7 @@ export default function VetoBoard({ state, viewer, act, busy, compact = false })
|
||||
? 'Live-Ansicht – nur Captains können wählen.'
|
||||
: 'Das andere Team ist am Zug.'}
|
||||
</span>
|
||||
{left !== null && <span className="turn-timer">Noch {Math.ceil(left / 1000)} s</span>}
|
||||
</div>
|
||||
)}
|
||||
{!current && veto.done && !compact && <div className="turn turn-done">Veto abgeschlossen</div>}
|
||||
@@ -129,3 +131,16 @@ function statusText(m, teams) {
|
||||
default: return 'Verfügbar';
|
||||
}
|
||||
}
|
||||
|
||||
/** Verbleibende Zeit des Veto-Schritts: der Server setzt sie bei jeder Änderung, danach zählt die Anzeige lokal herunter. */
|
||||
function useCountdown(ms) {
|
||||
const [left, setLeft] = useState(ms ?? null);
|
||||
useEffect(() => {
|
||||
setLeft(ms ?? null);
|
||||
if (ms == null) return undefined;
|
||||
const started = Date.now();
|
||||
const t = setInterval(() => setLeft(Math.max(0, ms - (Date.now() - started))), 250);
|
||||
return () => clearInterval(t);
|
||||
}, [ms]);
|
||||
return left;
|
||||
}
|
||||
@@ -523,3 +523,4 @@ input:focus, select:focus { border-color: var(--link); outline: none; }
|
||||
.admin-tab:hover { color: var(--text); }
|
||||
.admin-tab.is-active { color: var(--text); border-bottom-color: var(--primary); }
|
||||
|
||||
.turn-timer { margin-left: auto; color: var(--muted); font-variant-numeric: tabular-nums; }
|
||||
Reference in new issue
Block a user