ggdgsdbsdbbb / static / js / register.js
49 lines · 39 sloc · 1.24 KB · 6b58af6d046c2f705b57a55059b6b069c488ea59
Raw
1const registerForm = document.getElementById("register-form");
2const registerError = document.getElementById("register-error");
3const registerSubmit = registerForm.querySelector("input[type=submit]");
4
5function showRegisterError(msg) {
6 registerError.textContent = msg;
7 registerError.classList.add("alert");
8 registerError.style.display = "";
9}
10
11function clearRegisterError() {
12 registerError.textContent = "";
13 registerError.classList.remove("alert");
14}
15
16registerError.addEventListener("click", clearRegisterError);
17
18registerForm.addEventListener("submit", async (event) => {
19 event.preventDefault();
20
21 registerSubmit.disabled = true;
22 clearRegisterError();
23
24 const data = new FormData(registerForm);
25 data.set("no_redirect", "1");
26
27 let response;
28 try {
29 response = await fetch(registerForm.action, {
30 method: "POST",
31 body: data,
32 });
33 } catch (err) {
34 showRegisterError("Network error: " + err.message);
35 registerSubmit.disabled = false;
36 return;
37 }
38
39 const body = (await response.text()).trim();
40
41 if (response.ok && body === "ok") {
42 const username = data.get("username");
43 window.location.href = "/" + username;
44 return;
45 }
46
47 showRegisterError(body || "Failed to register");
48 registerSubmit.disabled = false;
49});
50