import { route } from "../router.js";
import { Api } from "../kek.js";
import {
saveSession,
setTopUser,
setLogoutVisible,
formToJSON,
} from "../utils.js";
function loginView() {
const card = document.createElement("div");
card.className = "card";
card.innerHTML = `
`;
const form = card.querySelector("#login-form");
form.addEventListener("submit", async (e) => {
e.preventDefault();
const { username, password } = Object.fromEntries(new FormData(form));
try {
const { session } = await Api.login({ username, password });
saveSession(session);
setTopUser(username);
setLogoutVisible(true);
location.hash = "#/dashboard";
} catch (err) {
const box = card.querySelector("#login-error");
box.classList.remove("hidden");
box.textContent = err.message || "Не удалось войти";
}
});
return card;
}
function registerView() {
const card = document.createElement("div");
card.className = "card";
card.innerHTML = `
`;
card.querySelector("#reg-form").addEventListener("submit", async (e) => {
e.preventDefault();
const payload = formToJSON(e.target);
try {
await Api.registerTeacher(payload);
const msg = card.querySelector("#reg-msg");
msg.classList.remove("hidden");
msg.textContent = "Учитель создан. Теперь можно войти.";
card.querySelector("#reg-err").classList.add("hidden");
} catch (err) {
const errBox = card.querySelector("#reg-err");
errBox.classList.remove("hidden");
errBox.textContent = err.message || "Ошибка регистрации";
}
});
return card;
}
route("/auth/login", async ({ view }) => {
view.appendChild(loginView());
});
route("/auth/register", async ({ view }) => {
view.appendChild(registerView());
});