78 lines
2.3 KiB
JavaScript
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();
|
|
}
|