refactor: make logout works on safari (#442)

This commit is contained in:
sigoden
2024-08-27 16:07:17 +08:00
committed by GitHub
parent 964bf61c37
commit 5b338c40da
5 changed files with 44 additions and 19 deletions

View File

@@ -91,6 +91,10 @@ let $emptyFolder;
* @type Element
*/
let $editor;
/**
* @type Element
*/
let $loginBtn;
/**
* @type Element
*/
@@ -121,6 +125,7 @@ async function ready() {
$uploadersTable = document.querySelector(".uploaders-table");
$emptyFolder = document.querySelector(".empty-folder");
$editor = document.querySelector(".editor");
$loginBtn = document.querySelector(".login-btn");
$logoutBtn = document.querySelector(".logout-btn");
$userName = document.querySelector(".user-name");
@@ -517,13 +522,12 @@ async function setupAuth() {
$logoutBtn.addEventListener("click", logout);
$userName.textContent = DATA.user;
} else {
const $loginBtn = document.querySelector(".login-btn");
$loginBtn.classList.remove("hidden");
$loginBtn.addEventListener("click", async () => {
try {
await checkAuth();
location.reload();
} catch {}
location.reload();
});
}
}
@@ -745,19 +749,19 @@ async function saveChange() {
async function checkAuth() {
if (!DATA.auth) return;
const res = await fetch(baseUrl(), {
method: "AUTH",
method: "CHECKAUTH",
});
await assertResOK(res);
document.querySelector(".login-btn").classList.add("hidden");
$loginBtn.classList.add("hidden");
$logoutBtn.classList.remove("hidden");
$userName.textContent = "";
$userName.textContent = await res.text();
}
function logout() {
if (!DATA.auth) return;
const url = baseUrl();
const xhr = new XMLHttpRequest();
xhr.open("AUTH", url, true, ":");
xhr.open("LOGOUT", url, true, DATA.user);
xhr.onload = () => {
location.href = url;
}