@boomerang-io/utils
Version:
A library of reusable utilities and hooks for React webapps on the Boomerang platform.
33 lines (32 loc) • 824 B
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = require("react");
function useCountdown(_ref) {
let {
countdown,
onCountdownEnd,
reset
} = _ref;
const [ct, setCountdown] = (0, _react.useState)(countdown);
const timer = (0, _react.useRef)(null);
(0, _react.useEffect)(() => {
if (reset) setCountdown(countdown);
if (ct < 1) {
setCountdown(countdown);
onCountdownEnd();
}
clearInterval(timer.current);
const countdownCounter = () => {
setCountdown(ct - 1);
};
timer.current = setInterval(countdownCounter, 1000);
return function cleanup() {
clearInterval(timer);
};
}, [reset, ct, countdown, onCountdownEnd]);
return ct;
}
var _default = exports.default = useCountdown;