Files
joeac.net/http/public/scripts/contact/submit-otp-form.js
T
2026-06-04 15:16:34 +01:00

78 lines
2.3 KiB
JavaScript

import { actions } from "./actions.js";
import { postErrorMessageOnOtpForm } from "./post-error-message.js";
/** @typedef {import("./selectors.js").Selectors} Selectors */
const fallbackErrorMsg =
"No can do. I'm afraid joeac.net is a bit broken right now - sorry about that.";
/**
* @param {Selectors} selectors
*/
export async function submitOtpForm(selectors) {
const { contactForm, otpDialog, successSection } = selectors;
const otpForm = otpDialog.otpForm();
otpDialog.submitButton()?.setAttribute("disabled", "");
const otpFormData = new FormData(otpForm ?? undefined);
const guess = [
otpFormData.get("1"),
otpFormData.get("2"),
otpFormData.get("3"),
otpFormData.get("4"),
otpFormData.get("5"),
otpFormData.get("6"),
].join("");
const name = contactForm.nameElem()?.value;
const email = contactForm.emailElem().value;
const message = contactForm.messageElem()?.value;
let verifyResult;
try {
verifyResult = await actions.verifyOtp({ guess, userId: email });
} catch (verifyError) {
otpDialog.submitButton()?.removeAttribute("disabled");
postErrorMessageOnOtpForm(
selectors,
verifyError?.toString() ?? fallbackErrorMsg,
);
return;
}
if (verifyResult === false) {
otpDialog.submitButton()?.removeAttribute("disabled");
postErrorMessageOnOtpForm(selectors, "Incorrect OTP. Check your email?");
otpDialog.firstOtpInput()?.focus();
return;
}
const sendmailToken = verifyResult;
try {
await actions.sendEmail({
email,
message: message,
name: name,
userId: email,
token: sendmailToken,
});
} catch (sendEmailError) {
const errorMsg = sendEmailError?.toString() ?? fallbackErrorMsg;
postErrorMessageOnOtpForm(selectors, errorMsg);
otpDialog.submitButton()?.removeAttribute("disabled");
return;
}
const sentName = successSection.name();
const sentEmail = successSection.email();
const sentMessage = successSection.message();
sentName && (sentName.textContent = name ?? "???");
sentEmail && (sentEmail.textContent = email ?? "???");
sentMessage && (sentMessage.textContent = message ?? "???");
contactForm.self()?.remove();
successSection.self()?.removeAttribute("hidden");
otpDialog.submitButton()?.removeAttribute("disabled");
otpDialog.self().close();
}