@coin-voyage/paykit
Version:
Seamless crypto payments. Onboard users from any chain, any coin into your app with one click.
24 lines (23 loc) • 750 B
JavaScript
import { useEffect, useState } from "react";
export function useCountdown(expirationS) {
const [nowS, setNowS] = useState(0);
const [initialRemaining] = useState(() => {
if (!expirationS)
return 0;
return Math.max(0, expirationS - Math.floor(Date.now() / 1000));
});
useEffect(() => {
if (!expirationS)
return;
const tick = () => {
setNowS(Math.floor(Date.now() / 1000));
};
tick();
const id = setInterval(tick, 1000);
return () => clearInterval(id);
}, [expirationS]);
if (!expirationS || nowS === 0)
return [0, 0];
const remainingS = Math.max(0, expirationS - nowS);
return [remainingS, initialRemaining];
}