import { Modal } from "./modules/modal.js"; import { Validator, ValidatorConf } from "./modules/validator.js"; import { _post, addLoader, removeLoader } from "./modules/common.js"; import { loadLangSelector } from "./modules/lang.js"; interface formWindow extends Window { invalidPassword: string; successModal: Modal; telegramModal: Modal; discordModal: Modal; matrixModal: Modal; confirmationModal: Modal code: string; messages: { [key: string]: string }; confirmation: boolean; telegramRequired: boolean; telegramPIN: string; discordRequired: boolean; discordPIN: string; discordStartCommand: string; discordInviteLink: boolean; discordServerName: string; matrixRequired: boolean; matrixUserID: string; userExpiryEnabled: boolean; userExpiryMonths: number; userExpiryDays: number; userExpiryHours: number; userExpiryMinutes: number; userExpiryMessage: string; } loadLangSelector("pwr"); declare var window: formWindow; const form = document.getElementById("form-create") as HTMLFormElement; const submitInput = form.querySelector("input[type=submit]") as HTMLInputElement; const submitSpan = form.querySelector("span.submit") as HTMLSpanElement; const passwordField = document.getElementById("create-password") as HTMLInputElement; const rePasswordField = document.getElementById("create-reenter-password") as HTMLInputElement; window.successModal = new Modal(document.getElementById("modal-success"), true); let validatorConf: ValidatorConf = { passwordField: passwordField, rePasswordField: rePasswordField, submitInput: submitInput, submitButton: submitSpan }; var validator = new Validator(validatorConf); var requirements = validator.requirements; interface sendDTO { pin: string; password: string; } form.onsubmit = (event: Event) => { event.preventDefault(); addLoader(submitSpan); const params = new URLSearchParams(window.location.search); let send: sendDTO = { pin: params.get("pin"), password: passwordField.value }; _post("/reset", send, (req: XMLHttpRequest) => { if (req.readyState == 4) { removeLoader(submitSpan); if (req.status == 400) { for (let type in req.response) { if (requirements[type]) { requirements[type].valid = req.response[type] as boolean; } } return; } else if (req.status != 200) { const old = submitSpan.textContent; submitSpan.textContent = window.messages["errorUnknown"]; submitSpan.classList.add("~critical"); submitSpan.classList.remove("~urge"); setTimeout(() => { submitSpan.classList.add("~urge"); submitSpan.classList.remove("~critical"); submitSpan.textContent = old; }, 2000); } else { window.successModal.show(); } } }, true); }; validator.validate();