$(() => { class AccessManager { #storedAccess = new Set(); constructor() { this.#storedAccess.clear(); let storedAccess = []; try { storedAccess = (JSON.parse(localStorage?.getItem("accessLinks") || "[]") || []); } catch (err) { console.error(err); } storedAccess.forEach(i => this.#storedAccess.add(i)); } #UpdateStorage() { localStorage?.setItem("accessLinks", JSON.stringify(Array.from(this.#storedAccess))); } Logout(code) { if (!this.#storedAccess.delete(code)) return; this.#UpdateStorage(); return LoadingTasks.push(() => { return new Promise(ok => { $.ajax({ url: `/api/access/${code}`, type: "DELETE", success: data => { window.ReloadAccessList(data); ok(); }, error: err => ok(false), }); }); }); } LinkLogin(linkList) { return new Promise(ok => { $.ajax({ url: "/api/access/link", type: "POST", data: { linkIds: JSON.stringify(Array.from(linkList)) }, success: data => { for (let i in data) this.#storedAccess.add(data[i].linkId); this.#UpdateStorage(); window.ReloadAccessList(data); ok(data); }, error: err => ok(false), }); }); } async RebuildAccess() { if (this.#storedAccess.size) { return LoadingTasks.push(() => { return this.LinkLogin(this.#storedAccess); }); } else { return LoadingTasks.push(() => { return new Promise(ok => { $.get("/api/access/list", data => { for (let i in data) this.#storedAccess.add(data[i].linkId); this.#UpdateStorage(); window.ReloadAccessList(data); ok(); }); }); }); } } } window.AccessManager = new AccessManager(); });