summaryrefslogtreecommitdiff
path: root/website/src/scripts/contact/reset-resend-button.ts
diff options
context:
space:
mode:
Diffstat (limited to 'website/src/scripts/contact/reset-resend-button.ts')
-rw-r--r--website/src/scripts/contact/reset-resend-button.ts32
1 files changed, 32 insertions, 0 deletions
diff --git a/website/src/scripts/contact/reset-resend-button.ts b/website/src/scripts/contact/reset-resend-button.ts
new file mode 100644
index 0000000..21b0adc
--- /dev/null
+++ b/website/src/scripts/contact/reset-resend-button.ts
@@ -0,0 +1,32 @@
+import type { Selectors } from "./selectors";
+
+export function resetResendButton(
+ { otpDialog }: Selectors,
+ resendButtonInterval: NodeJS.Timeout | undefined,
+): Result {
+ 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 };
+}
+
+type Result = {
+ resendButtonInterval: NodeJS.Timeout | undefined;
+};