add account switcher to loading screen

This commit is contained in:
MathMan05 2024-08-11 15:41:51 -05:00
parent 6ac1a4e904
commit ef2d228b70
6 changed files with 178 additions and 133 deletions

View file

@ -14,17 +14,7 @@ const users = getBulkUsers();
if (!users.currentuser) { if (!users.currentuser) {
window.location.href = '/login.html'; window.location.href = '/login.html';
} }
let thisuser = new Localuser(users.users[users.currentuser]); function showAccountSwitcher() {
thisuser.initwebsocket().then(_ => {
thisuser.loaduser();
thisuser.init();
document.getElementById("loading").classList.add("doneloading");
document.getElementById("loading").classList.remove("loading");
console.log("done loading");
});
{
const userinfo = document.getElementById("userinfo");
userinfo.addEventListener("click", function (event) {
const table = document.createElement("div"); const table = document.createElement("div");
for (const thing of Object.values(users.users)) { for (const thing of Object.values(users.users)) {
const specialuser = thing; const specialuser = thing;
@ -78,8 +68,34 @@ thisuser.initwebsocket().then(_ => {
Contextmenu.currentmenu = table; Contextmenu.currentmenu = table;
console.log(table); console.log(table);
document.body.append(table); document.body.append(table);
event.stopImmediatePropagation(); }
{
const userinfo = document.getElementById("userinfo");
userinfo.addEventListener("click", _ => {
_.stopImmediatePropagation();
showAccountSwitcher();
}); });
const switchaccounts = document.getElementById("switchaccounts");
switchaccounts.addEventListener("click", _ => {
_.stopImmediatePropagation();
showAccountSwitcher();
});
console.log("this ran");
}
let thisuser;
try {
thisuser = new Localuser(users.users[users.currentuser]);
thisuser.initwebsocket().then(_ => {
thisuser.loaduser();
thisuser.init();
document.getElementById("loading").classList.add("doneloading");
document.getElementById("loading").classList.remove("loading");
console.log("done loading");
});
}
catch {
document.getElementById("load-desc").textContent = "Account unable to start";
thisuser = new Localuser(-1);
} }
{ {
const menu = new Contextmenu("create rightclick"); const menu = new Contextmenu("create rightclick");

View file

@ -36,6 +36,9 @@ class Localuser {
errorBackoff = 0; errorBackoff = 0;
mfa_enabled; mfa_enabled;
constructor(userinfo) { constructor(userinfo) {
if (userinfo === -1) {
return;
}
this.token = userinfo.token; this.token = userinfo.token;
this.userinfo = userinfo; this.userinfo = userinfo;
this.serverurls = this.userinfo.serverurls; this.serverurls = this.userinfo.serverurls;
@ -104,7 +107,9 @@ class Localuser {
this.outoffocus(); this.outoffocus();
this.guilds = []; this.guilds = [];
this.guildids = new Map(); this.guildids = new Map();
if (this.ws) {
this.ws.close(4001); this.ws.close(4001);
}
SnowFlake.clear(); SnowFlake.clear();
User.clear(); User.clear();
} }

View file

@ -22,6 +22,7 @@
<img src="/logo.svg" width="1in" height="1in"> <img src="/logo.svg" width="1in" height="1in">
<h1>Jank Client is loading</h1> <h1>Jank Client is loading</h1>
<h2 id="load-desc">This shouldn't take long</h2> <h2 id="load-desc">This shouldn't take long</h2>
<h1 id="switchaccounts">Switch Accounts</h1>
</div> </div>
</div> </div>
<div class="flexltr" id="page"> <div class="flexltr" id="page">

View file

@ -19,17 +19,8 @@ if(!users.currentuser){
window.location.href = '/login.html'; window.location.href = '/login.html';
} }
let thisuser=new Localuser(users.users[users.currentuser]);
thisuser.initwebsocket().then(_=>{ function showAccountSwitcher(){
thisuser.loaduser();
thisuser.init();
document.getElementById("loading").classList.add("doneloading");
document.getElementById("loading").classList.remove("loading");
console.log("done loading")
});
{
const userinfo=document.getElementById("userinfo");
userinfo.addEventListener("click",function(event){
const table=document.createElement("div"); const table=document.createElement("div");
for(const thing of Object.values(users.users)){ for(const thing of Object.values(users.users)){
const specialuser=thing as Specialuser; const specialuser=thing as Specialuser;
@ -87,9 +78,35 @@ thisuser.initwebsocket().then(_=>{
Contextmenu.currentmenu=table; Contextmenu.currentmenu=table;
console.log(table); console.log(table);
document.body.append(table); document.body.append(table);
event.stopImmediatePropagation();
})
} }
{
const userinfo=document.getElementById("userinfo");
userinfo.addEventListener("click",_=>{
_.stopImmediatePropagation();
showAccountSwitcher();
})
const switchaccounts=document.getElementById("switchaccounts");
switchaccounts.addEventListener("click",_=>{
_.stopImmediatePropagation();
showAccountSwitcher();
})
console.log("this ran")
}
let thisuser:Localuser;
try{
thisuser=new Localuser(users.users[users.currentuser]);
thisuser.initwebsocket().then(_=>{
thisuser.loaduser();
thisuser.init();
document.getElementById("loading").classList.add("doneloading");
document.getElementById("loading").classList.remove("loading");
console.log("done loading")
});
}catch{
document.getElementById("load-desc").textContent="Account unable to start";
thisuser=new Localuser(-1);
}
{ {
const menu=new Contextmenu("create rightclick"); const menu=new Contextmenu("create rightclick");

View file

@ -39,7 +39,10 @@ class Localuser{
connectionSucceed=0; connectionSucceed=0;
errorBackoff=0; errorBackoff=0;
mfa_enabled:boolean; mfa_enabled:boolean;
constructor(userinfo:Specialuser){ constructor(userinfo:Specialuser|-1){
if(userinfo===-1){
return;
}
this.token=userinfo.token; this.token=userinfo.token;
this.userinfo=userinfo; this.userinfo=userinfo;
this.serverurls=this.userinfo.serverurls; this.serverurls=this.userinfo.serverurls;
@ -110,7 +113,9 @@ class Localuser{
this.outoffocus(); this.outoffocus();
this.guilds=[]; this.guilds=[];
this.guildids=new Map(); this.guildids=new Map();
if(this.ws){
this.ws.close(4001) this.ws.close(4001)
}
SnowFlake.clear(); SnowFlake.clear();
User.clear(); User.clear();
} }

View file

@ -1058,6 +1058,7 @@ span {
max-height: 80vh; max-height: 80vh;
overflow: auto; overflow: auto;
border:solid var(--black) .035in; border:solid var(--black) .035in;
z-index: 102;
} }
.switchtable{ .switchtable{
transition: background .3s; transition: background .3s;