diff --git a/.dist/localuser.js b/.dist/localuser.js index b9e7cef..8654bbe 100644 --- a/.dist/localuser.js +++ b/.dist/localuser.js @@ -33,6 +33,7 @@ class Localuser { typing = new Map(); connectionSucceed = 0; errorBackoff = 0; + userMap = new Map(); instancePing = { name: "Unknown", }; @@ -119,7 +120,6 @@ class Localuser { this.ws.close(4001); } SnowFlake.clear(); - User.clear(); } swapped = false; async initwebsocket() { @@ -833,7 +833,7 @@ class Localuser { }, { clear: true }); finput.watchForChange(_ => { if (!_) { - file = _; + file = null; hypouser.avatar = null; hypouser.hypotheticalpfp = true; regen(); diff --git a/.dist/member.js b/.dist/member.js index c1fbef3..18fdc2c 100644 --- a/.dist/member.js +++ b/.dist/member.js @@ -10,8 +10,9 @@ class Member { id; nick; constructor(memberjson, owner) { - if (User.userids[memberjson.id]) { - this.user = User.userids[memberjson.id]; + this.owner = owner; + if (this.localuser.userMap.has(memberjson.id)) { + this.user = this.localuser.userMap.get(memberjson.id); } else if (memberjson.user) { this.user = new User(memberjson.user, owner.localuser); @@ -19,7 +20,6 @@ class Member { else { throw new Error("Missing user object of this member"); } - this.owner = owner; for (const thing of Object.keys(memberjson)) { if (thing === "guild") { continue; @@ -52,8 +52,8 @@ class Member { } static async new(memberjson, owner) { let user; - if (User.userids[memberjson.id]) { - user = User.userids[memberjson.id]; + if (owner.localuser.userMap.has(memberjson.id)) { + user = owner.localuser.userMap.get(memberjson.id); } else if (memberjson.user) { user = new User(memberjson.user, owner.localuser); diff --git a/.dist/message.js b/.dist/message.js index 3afe6d3..77bce65 100644 --- a/.dist/message.js +++ b/.dist/message.js @@ -557,7 +557,7 @@ class Message { for (const i in this.reactions) { const reaction = this.reactions[i]; if ((reaction.emoji.id && reaction.emoji.id == emoji.id) || (!reaction.emoji.id && reaction.emoji.name == emoji.name)) { - this.reactions.splice(i, 1); + this.reactions.splice(+i, 1); this.updateReactions(); break; } diff --git a/.dist/user.js b/.dist/user.js index 38f9235..c407678 100644 --- a/.dist/user.js +++ b/.dist/user.js @@ -4,7 +4,6 @@ import { MarkDown } from "./markdown.js"; import { Contextmenu } from "./contextmenu.js"; import { SnowFlake } from "./snowflake.js"; class User { - static userids = {}; owner; hypotheticalpfp; snowflake; @@ -125,16 +124,13 @@ class User { return (us.hasPermission("BAN_MEMBERS")) || false; }); } - static clear() { - this.userids = {}; - } static checkuser(user, owner) { - if (User.userids[user.id]) { - return User.userids[user.id]; + if (owner.userMap.has(user.id)) { + return owner.userMap.get(user.id); } else { const tempuser = new User(user, owner, true); - User.userids[user.id] = tempuser; + owner.userMap.set(user.id, tempuser); return tempuser; } } diff --git a/webpage/localuser.ts b/webpage/localuser.ts index c38ce65..c061f8a 100644 --- a/webpage/localuser.ts +++ b/webpage/localuser.ts @@ -37,6 +37,7 @@ class Localuser{ typing:Map=new Map(); connectionSucceed=0; errorBackoff=0; + readonly userMap=new Map(); instancePing={ name:"Unknown", }; @@ -126,7 +127,6 @@ class Localuser{ this.ws.close(4001) } SnowFlake.clear(); - User.clear(); } swapped=false; async initwebsocket():Promise{ @@ -843,7 +843,7 @@ class Localuser{ },{clear:true}); finput.watchForChange(_=>{ if(!_) { - file=_; + file=null; hypouser.avatar = null; hypouser.hypotheticalpfp=true; regen(); diff --git a/webpage/member.ts b/webpage/member.ts index b982740..de02e8c 100644 --- a/webpage/member.ts +++ b/webpage/member.ts @@ -13,14 +13,15 @@ class Member{ id:string; nick:string; private constructor(memberjson:memberjson,owner:Guild){ - if(User.userids[memberjson.id]){ - this.user=User.userids[memberjson.id]; + this.owner=owner; + if(this.localuser.userMap.has(memberjson.id)){ + this.user=this.localuser.userMap.get(memberjson.id); }else if(memberjson.user){ this.user=new User(memberjson.user,owner.localuser); }else{ throw new Error("Missing user object of this member"); } - this.owner=owner; + for(const thing of Object.keys(memberjson)){ if(thing==="guild"){continue} if(thing==="owner"){continue} @@ -52,8 +53,8 @@ class Member{ } static async new(memberjson:memberjson,owner:Guild):Promise{ let user:User; - if(User.userids[memberjson.id]){ - user=User.userids[memberjson.id]; + if(owner.localuser.userMap.has(memberjson.id)){ + user=owner.localuser.userMap.get(memberjson.id); }else if(memberjson.user){ user=new User(memberjson.user,owner.localuser); }else{ diff --git a/webpage/message.ts b/webpage/message.ts index 3940506..50633ef 100644 --- a/webpage/message.ts +++ b/webpage/message.ts @@ -60,7 +60,7 @@ class Message{ Message.contextmenu.addbutton("Copy message id",function(this:Message){ navigator.clipboard.writeText(this.id); }); - Message.contextmenu.addsubmenu("Add reaction",function(this:Message,e){ + Message.contextmenu.addsubmenu("Add reaction",function(this:Message,e:{x:number,y:number}){ Emoji.emojiPicker(e.x,e.y,this.localuser).then(_=>{ this.reactionToggle(_); }); @@ -555,7 +555,7 @@ class Message{ for (const i in this.reactions) { const reaction = this.reactions[i]; if ((reaction.emoji.id && reaction.emoji.id == emoji.id) || (!reaction.emoji.id && reaction.emoji.name == emoji.name)) { - this.reactions.splice(i, 1); + this.reactions.splice(+i, 1); this.updateReactions(); break; } diff --git a/webpage/user.ts b/webpage/user.ts index f1ade33..a3032cf 100644 --- a/webpage/user.ts +++ b/webpage/user.ts @@ -8,7 +8,6 @@ import { SnowFlake } from "./snowflake.js"; import { presencejson, userjson } from "./jsontypes.js"; class User{ - static userids={}; owner:Localuser; hypotheticalpfp:boolean; snowflake:SnowFlake; @@ -127,15 +126,12 @@ class User{ return (us.hasPermission("BAN_MEMBERS"))||false; }); } - static clear(){ - this.userids={}; - } static checkuser(user:User|userjson,owner:Localuser):User{ - if(User.userids[user.id]){ - return User.userids[user.id]; + if(owner.userMap.has(user.id)){ + return owner.userMap.get(user.id) as User; }else{ const tempuser=new User(user as userjson,owner,true) - User.userids[user.id]=tempuser; + owner.userMap.set(user.id,tempuser); return tempuser; } }