diff options
| author | Joe Carstairs <me@joeac.net> | 2025-12-18 11:04:03 +0000 |
|---|---|---|
| committer | Joe Carstairs <me@joeac.net> | 2025-12-18 11:04:03 +0000 |
| commit | 46c9b7731622f1f4d0f6a03c3179e747e0ce065d (patch) | |
| tree | 71c60d9cf72797b06054a61990f7baa41db2e8a0 /website/src/scripts/contact/resend-otp.ts | |
| parent | 40d6c7f248c3fe506690ee3ccb3894f952e164ed (diff) | |
contact page
Diffstat (limited to 'website/src/scripts/contact/resend-otp.ts')
| -rw-r--r-- | website/src/scripts/contact/resend-otp.ts | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/website/src/scripts/contact/resend-otp.ts b/website/src/scripts/contact/resend-otp.ts new file mode 100644 index 0000000..3f3a4f3 --- /dev/null +++ b/website/src/scripts/contact/resend-otp.ts @@ -0,0 +1,29 @@ +import { actions } from "astro:actions"; +import { resetResendButton } from "./reset-resend-button"; +import { postErrorMessageOnOtpForm } from "./post-error-message"; +import type { Selectors } from "./selectors"; + +const fallbackErrorMsg = + "No can do. I'm afraid joeac.net is a bit broken right now - sorry about that."; + +export async function resendOtp( + selectors: Selectors, + resetButtonInterval: NodeJS.Timeout | undefined, +): Promise<Result> { + const result = resetResendButton(selectors, resetButtonInterval); + const name = selectors.contactForm.nameElem()?.value; + const email = selectors.contactForm.emailElem().value; + + const sendOtpResult = await actions.otp.send({ type: "email", name, email }); + if (sendOtpResult.error) { + const errorMsg = sendOtpResult.error?.toString() ?? fallbackErrorMsg; + postErrorMessageOnOtpForm(selectors, errorMsg); + throw sendOtpResult.error; + } + + return result; +} + +type Result = { + resendButtonInterval: NodeJS.Timeout | undefined; +}; |
