const $form = document.querySelector(".form") const $validationBox = document.querySelector("#validationBox") const $validationMsg = document.querySelector("#validationMsg") const $successBox = document.querySelector("#successBox") const $successMsg = document.querySelector("#successMsg") const showError = (message) => { $validationBox.style.display = "block" $validationMsg.innerText = message } const clearError = () => { $validationMsg.innerText = "" $validationBox.style.display = "none" } const showSuccess = (message) => { $successBox.style.display = "block" $successMsg.innerText = message } const clearSuccess = () => { $successMsg.innerText = "" $successBox.style.display = "none" } document.addEventListener("DOMContentLoaded", (e) => { $form.addEventListener("submit", async (e) => { e.preventDefault() clearError() clearSuccess() const formData = new FormData($form) const data = Object.fromEntries(formData) if ([{key: "email", name: "Email"}, {key: "password", name: "Password"}].some(({key, name}) => { if (!data[key]) { showError(`${name} is required`) return true } return false; })) { return } try { const response = await fetch("/api/v1/login", { method: "POST", body: JSON.stringify(data), headers: { "Content-Type": "application/json", }, }) if (response.status != 200) { const json = await response.json() const text = json.error || "Unexpected error happened" showError(`Failed to log into account. ${text[0].toUpperCase() + text.slice(1)}`) } else { showSuccess("Successfully logged into your account") $form.reset() } } catch(err) { showError("Failed to log into account. Unexpected error happened") } }) })