33 lines
1.0 KiB
JavaScript
33 lines
1.0 KiB
JavaScript
/** @typedef {import("./selectors.js").Selectors} Selectors */
|
|
|
|
/** @typedef {{ resendButtonInterval: NodeJS.Timeout | undefined }} Result */
|
|
|
|
/**
|
|
* @param {Selectors} selectors
|
|
* @param {NodeJS.Timeout | undefined} resetButtonInterval
|
|
* @returns {Result}
|
|
*/
|
|
export function resetResendButton({ otpDialog }, resendButtonInterval) {
|
|
clearInterval(resendButtonInterval);
|
|
|
|
const resendButton = otpDialog.resendButton();
|
|
if (resendButton) {
|
|
resendButton.setAttribute("data-countdown", "60");
|
|
resendButton.setAttribute("disabled", "");
|
|
|
|
resendButtonInterval = setInterval(() => {
|
|
const countdown = +(resendButton.getAttribute("data-countdown") ?? 1) - 1;
|
|
resendButton.setAttribute("data-countdown", countdown.toString());
|
|
resendButton.textContent = `Resend (${countdown}s)`;
|
|
}, 1000);
|
|
|
|
setTimeout(() => {
|
|
clearInterval(resendButtonInterval);
|
|
resendButton.textContent = "Resend";
|
|
resendButton.removeAttribute("disabled");
|
|
}, 1000 * 60);
|
|
}
|
|
|
|
return { resendButtonInterval };
|
|
}
|