109 lines
4.1 KiB
JavaScript
109 lines
4.1 KiB
JavaScript
import { checkInstance } from "./login.js";
|
|
if (document.getElementById("register")) {
|
|
document.getElementById("register").addEventListener("submit", registertry);
|
|
}
|
|
async function registertry(e) {
|
|
e.preventDefault();
|
|
const elements = e.srcElement;
|
|
const email = elements[1].value;
|
|
const username = elements[2].value;
|
|
if (elements[3].value !== elements[4].value) {
|
|
document.getElementById("wrong").textContent = "Passwords don't match";
|
|
return;
|
|
}
|
|
const password = elements[3].value;
|
|
const dateofbirth = elements[5].value;
|
|
const apiurl = new URL(JSON.parse(localStorage.getItem("instanceinfo")).api);
|
|
await fetch(apiurl + "/auth/register", {
|
|
body: JSON.stringify({
|
|
date_of_birth: dateofbirth,
|
|
email: email,
|
|
username: username,
|
|
password: password,
|
|
consent: elements[6].checked,
|
|
captcha_key: elements[7]?.value
|
|
}),
|
|
headers: {
|
|
"content-type": "application/json"
|
|
},
|
|
method: "POST"
|
|
}).then(e => {
|
|
e.json().then(e => {
|
|
if (e.captcha_sitekey) {
|
|
const capt = document.getElementById("h-captcha");
|
|
if (!capt.children.length) {
|
|
const capty = document.createElement("div");
|
|
capty.classList.add("h-captcha");
|
|
capty.setAttribute("data-sitekey", e.captcha_sitekey);
|
|
const script = document.createElement("script");
|
|
script.src = "https://js.hcaptcha.com/1/api.js";
|
|
capt.append(script);
|
|
capt.append(capty);
|
|
}
|
|
else {
|
|
eval("hcaptcha.reset()");
|
|
}
|
|
return;
|
|
}
|
|
if (!e.token) {
|
|
console.log(e);
|
|
if (e.errors.consent) {
|
|
error(elements[6], e.errors.consent._errors[0].message);
|
|
}
|
|
else if (e.errors.password) {
|
|
error(elements[3], "Password: " + e.errors.password._errors[0].message);
|
|
}
|
|
else if (e.errors.username) {
|
|
error(elements[2], "Username: " + e.errors.username._errors[0].message);
|
|
}
|
|
else if (e.errors.email) {
|
|
error(elements[1], "Email: " + e.errors.email._errors[0].message);
|
|
}
|
|
else if (e.errors.date_of_birth) {
|
|
error(elements[5], "Date of Birth: " + e.errors.date_of_birth._errors[0].message);
|
|
}
|
|
else {
|
|
document.getElementById("wrong").textContent = e.errors[Object.keys(e.errors)[0]]._errors[0].message;
|
|
}
|
|
}
|
|
else {
|
|
localStorage.setItem("token", e.token);
|
|
window.location.href = '/channels/@me';
|
|
}
|
|
});
|
|
});
|
|
//document.getElementById("wrong").textContent=h;
|
|
// console.log(h);
|
|
}
|
|
function error(e, message) {
|
|
const p = e.parentElement;
|
|
let element = p.getElementsByClassName("suberror")[0];
|
|
if (!element) {
|
|
const div = document.createElement("div");
|
|
div.classList.add("suberror", "suberrora");
|
|
p.append(div);
|
|
element = div;
|
|
}
|
|
else {
|
|
element.classList.remove("suberror");
|
|
setTimeout(_ => { element.classList.add("suberror"); }, 100);
|
|
}
|
|
element.textContent = message;
|
|
}
|
|
let TOSa = document.getElementById("TOSa");
|
|
async function tosLogic() {
|
|
const apiurl = new URL(JSON.parse(localStorage.getItem("instanceinfo")).api);
|
|
const tosPage = (await (await fetch(apiurl.toString() + "/ping")).json()).instance.tosPage;
|
|
if (tosPage) {
|
|
document.getElementById("TOSbox").innerHTML = "I agree to the <a href=\"\" id=\"TOSa\">Terms of Service</a>:";
|
|
TOSa = document.getElementById("TOSa");
|
|
TOSa.href = tosPage;
|
|
}
|
|
else {
|
|
document.getElementById("TOSbox").textContent = "This instance has no Terms of Service, accept ToS anyways:";
|
|
TOSa = null;
|
|
}
|
|
console.log(tosPage);
|
|
}
|
|
tosLogic();
|
|
checkInstance["alt"] = tosLogic;
|