Files
CaseGambling/client/src/hooks/useCountdown.js
T
2026-07-16 20:23:58 +02:00

25 lines
645 B
JavaScript

import { useEffect, useState } from 'react';
export function useCountdown(endsAt) {
const [remaining, setRemaining] = useState(0);
useEffect(() => {
if (!endsAt) {
setRemaining(0);
return undefined;
}
const tick = () => {
const ms = new Date(endsAt).getTime() - Date.now();
setRemaining(Math.max(0, Math.ceil(ms / 1000)));
};
tick();
const id = setInterval(tick, 250);
return () => clearInterval(id);
}, [endsAt]);
const mm = String(Math.floor(remaining / 60)).padStart(2, '0');
const ss = String(remaining % 60).padStart(2, '0');
return { remaining, label: `${mm}:${ss}` };
}