nice update
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
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}` };
|
||||
}
|
||||
Reference in New Issue
Block a user