From 4527e012daa61dc07258eaedf3e03179b59fca8d Mon Sep 17 00:00:00 2001
From: Renaud Chaput <renchap@gmail.com>
Date: Mon, 29 Apr 2024 10:23:05 +0200
Subject: [PATCH] Convert `entrypoints/sign_up` to Typescript (#30106)

---
 app/javascript/entrypoints/sign_up.js | 42 -----------------------
 app/javascript/entrypoints/sign_up.ts | 48 +++++++++++++++++++++++++++
 2 files changed, 48 insertions(+), 42 deletions(-)
 delete mode 100644 app/javascript/entrypoints/sign_up.js
 create mode 100644 app/javascript/entrypoints/sign_up.ts

diff --git a/app/javascript/entrypoints/sign_up.js b/app/javascript/entrypoints/sign_up.js
deleted file mode 100644
index cf9c83777..000000000
--- a/app/javascript/entrypoints/sign_up.js
+++ /dev/null
@@ -1,42 +0,0 @@
-import './public-path';
-import axios from 'axios';
-
-import ready from '../mastodon/ready';
-
-ready(() => {
-  setInterval(() => {
-    axios.get('/api/v1/emails/check_confirmation').then((response) => {
-      if (response.data) {
-        window.location = '/start';
-      }
-    }).catch(error => {
-      console.error(error);
-    });
-  }, 5000);
-
-  document.querySelectorAll('.timer-button').forEach(button => {
-    let counter = 30;
-
-    const container = document.createElement('span');
-
-    const updateCounter = () => {
-      container.innerText = ` (${counter})`;
-    };
-
-    updateCounter();
-
-    const countdown = setInterval(() => {
-      counter--;
-
-      if (counter === 0) {
-        button.disabled = false;
-        button.removeChild(container);
-        clearInterval(countdown);
-      } else {
-        updateCounter();
-      }
-    }, 1000);
-
-    button.appendChild(container);
-  });
-});
diff --git a/app/javascript/entrypoints/sign_up.ts b/app/javascript/entrypoints/sign_up.ts
new file mode 100644
index 000000000..880738fcb
--- /dev/null
+++ b/app/javascript/entrypoints/sign_up.ts
@@ -0,0 +1,48 @@
+import './public-path';
+import axios from 'axios';
+
+import ready from '../mastodon/ready';
+
+async function checkConfirmation() {
+  const response = await axios.get('/api/v1/emails/check_confirmation');
+
+  if (response.data) {
+    window.location.href = '/start';
+  }
+}
+
+ready(() => {
+  setInterval(() => {
+    void checkConfirmation();
+  }, 5000);
+
+  document
+    .querySelectorAll<HTMLButtonElement>('button.timer-button')
+    .forEach((button) => {
+      let counter = 30;
+
+      const container = document.createElement('span');
+
+      const updateCounter = () => {
+        container.innerText = ` (${counter})`;
+      };
+
+      updateCounter();
+
+      const countdown = setInterval(() => {
+        counter--;
+
+        if (counter === 0) {
+          button.disabled = false;
+          button.removeChild(container);
+          clearInterval(countdown);
+        } else {
+          updateCounter();
+        }
+      }, 1000);
+
+      button.appendChild(container);
+    });
+}).catch((e: unknown) => {
+  throw e;
+});