import Aview from "./Aview.ts"
import { dragElement } from "./drag.ts";
import { setOnekoState } from "../oneko.ts"
import { isLogged, navigationManager, user_api, auth_api } from "../main.ts"
export default class extends Aview {
constructor() {
super();
this.setTitle("register");
setOnekoState("default");
}
async getHTML() {
return `
`;
}
async run() {
document.getElementById("register-google").href = `${auth_api}/register/google`;
dragElement(document.getElementById("window"));
const login = async () => {
const username = (document.getElementById("username") as HTMLInputElement).value;
const password = (document.getElementById("password") as HTMLInputElement).value;
try {
const data_req = await fetch(auth_api + "/register", {
method: "POST",
headers: { "Content-Type": "application/json", },
credentials: "include",
body: JSON.stringify({ user: username, password: password }),
});
const data = await data_req.json();
if (data_req.status === 200) {
let uuid_req = await fetch(auth_api + "/me", {
method: "GET",
credentials: "include",
});
let uuid = await uuid_req.json();
document.cookie = `uuid=${uuid.user};max-ages=${60 * 60 * 24 * 7}`;
isLogged();
navigationManager("/");
}
else if (data_req.status === 400) {
if (document.getElementById("login-error-message")) {
document.getElementById("login-error-message").innerHTML = "error: " + data.error;
document.getElementById("login-error-message")?.classList.remove("hidden");
}
}
else {
throw new Error("invalid response");
}
}
catch (error) {
console.log(error);
if (document.getElementById("login-error-message")) {
document.getElementById("login-error-message").innerHTML = "error: server error, try again later...";
document.getElementById("login-error-message")?.classList.remove("hidden");
}
}
};
document.getElementById("register-button")?.addEventListener("click", login);
}
}