Update to the User object

This commit is contained in:
MathMan05 2024-08-26 13:43:53 -05:00
parent a90e584790
commit b886e1ad1b
8 changed files with 24 additions and 31 deletions

View file

@ -33,6 +33,7 @@ class Localuser {
typing = new Map(); typing = new Map();
connectionSucceed = 0; connectionSucceed = 0;
errorBackoff = 0; errorBackoff = 0;
userMap = new Map();
instancePing = { instancePing = {
name: "Unknown", name: "Unknown",
}; };
@ -119,7 +120,6 @@ class Localuser {
this.ws.close(4001); this.ws.close(4001);
} }
SnowFlake.clear(); SnowFlake.clear();
User.clear();
} }
swapped = false; swapped = false;
async initwebsocket() { async initwebsocket() {
@ -833,7 +833,7 @@ class Localuser {
}, { clear: true }); }, { clear: true });
finput.watchForChange(_ => { finput.watchForChange(_ => {
if (!_) { if (!_) {
file = _; file = null;
hypouser.avatar = null; hypouser.avatar = null;
hypouser.hypotheticalpfp = true; hypouser.hypotheticalpfp = true;
regen(); regen();

View file

@ -10,8 +10,9 @@ class Member {
id; id;
nick; nick;
constructor(memberjson, owner) { constructor(memberjson, owner) {
if (User.userids[memberjson.id]) { this.owner = owner;
this.user = User.userids[memberjson.id]; if (this.localuser.userMap.has(memberjson.id)) {
this.user = this.localuser.userMap.get(memberjson.id);
} }
else if (memberjson.user) { else if (memberjson.user) {
this.user = new User(memberjson.user, owner.localuser); this.user = new User(memberjson.user, owner.localuser);
@ -19,7 +20,6 @@ class Member {
else { else {
throw new Error("Missing user object of this member"); throw new Error("Missing user object of this member");
} }
this.owner = owner;
for (const thing of Object.keys(memberjson)) { for (const thing of Object.keys(memberjson)) {
if (thing === "guild") { if (thing === "guild") {
continue; continue;
@ -52,8 +52,8 @@ class Member {
} }
static async new(memberjson, owner) { static async new(memberjson, owner) {
let user; let user;
if (User.userids[memberjson.id]) { if (owner.localuser.userMap.has(memberjson.id)) {
user = User.userids[memberjson.id]; user = owner.localuser.userMap.get(memberjson.id);
} }
else if (memberjson.user) { else if (memberjson.user) {
user = new User(memberjson.user, owner.localuser); user = new User(memberjson.user, owner.localuser);

View file

@ -557,7 +557,7 @@ class Message {
for (const i in this.reactions) { for (const i in this.reactions) {
const reaction = this.reactions[i]; const reaction = this.reactions[i];
if ((reaction.emoji.id && reaction.emoji.id == emoji.id) || (!reaction.emoji.id && reaction.emoji.name == emoji.name)) { 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(); this.updateReactions();
break; break;
} }

View file

@ -4,7 +4,6 @@ import { MarkDown } from "./markdown.js";
import { Contextmenu } from "./contextmenu.js"; import { Contextmenu } from "./contextmenu.js";
import { SnowFlake } from "./snowflake.js"; import { SnowFlake } from "./snowflake.js";
class User { class User {
static userids = {};
owner; owner;
hypotheticalpfp; hypotheticalpfp;
snowflake; snowflake;
@ -125,16 +124,13 @@ class User {
return (us.hasPermission("BAN_MEMBERS")) || false; return (us.hasPermission("BAN_MEMBERS")) || false;
}); });
} }
static clear() {
this.userids = {};
}
static checkuser(user, owner) { static checkuser(user, owner) {
if (User.userids[user.id]) { if (owner.userMap.has(user.id)) {
return User.userids[user.id]; return owner.userMap.get(user.id);
} }
else { else {
const tempuser = new User(user, owner, true); const tempuser = new User(user, owner, true);
User.userids[user.id] = tempuser; owner.userMap.set(user.id, tempuser);
return tempuser; return tempuser;
} }
} }

View file

@ -37,6 +37,7 @@ class Localuser{
typing:Map<Member,number>=new Map(); typing:Map<Member,number>=new Map();
connectionSucceed=0; connectionSucceed=0;
errorBackoff=0; errorBackoff=0;
readonly userMap=new Map<string,User>();
instancePing={ instancePing={
name:"Unknown", name:"Unknown",
}; };
@ -126,7 +127,6 @@ class Localuser{
this.ws.close(4001) this.ws.close(4001)
} }
SnowFlake.clear(); SnowFlake.clear();
User.clear();
} }
swapped=false; swapped=false;
async initwebsocket():Promise<void>{ async initwebsocket():Promise<void>{
@ -843,7 +843,7 @@ class Localuser{
},{clear:true}); },{clear:true});
finput.watchForChange(_=>{ finput.watchForChange(_=>{
if(!_) { if(!_) {
file=_; file=null;
hypouser.avatar = null; hypouser.avatar = null;
hypouser.hypotheticalpfp=true; hypouser.hypotheticalpfp=true;
regen(); regen();

View file

@ -13,14 +13,15 @@ class Member{
id:string; id:string;
nick:string; nick:string;
private constructor(memberjson:memberjson,owner:Guild){ private constructor(memberjson:memberjson,owner:Guild){
if(User.userids[memberjson.id]){ this.owner=owner;
this.user=User.userids[memberjson.id]; if(this.localuser.userMap.has(memberjson.id)){
this.user=this.localuser.userMap.get(memberjson.id);
}else if(memberjson.user){ }else if(memberjson.user){
this.user=new User(memberjson.user,owner.localuser); this.user=new User(memberjson.user,owner.localuser);
}else{ }else{
throw new Error("Missing user object of this member"); throw new Error("Missing user object of this member");
} }
this.owner=owner;
for(const thing of Object.keys(memberjson)){ for(const thing of Object.keys(memberjson)){
if(thing==="guild"){continue} if(thing==="guild"){continue}
if(thing==="owner"){continue} if(thing==="owner"){continue}
@ -52,8 +53,8 @@ class Member{
} }
static async new(memberjson:memberjson,owner:Guild):Promise<Member|undefined>{ static async new(memberjson:memberjson,owner:Guild):Promise<Member|undefined>{
let user:User; let user:User;
if(User.userids[memberjson.id]){ if(owner.localuser.userMap.has(memberjson.id)){
user=User.userids[memberjson.id]; user=owner.localuser.userMap.get(memberjson.id);
}else if(memberjson.user){ }else if(memberjson.user){
user=new User(memberjson.user,owner.localuser); user=new User(memberjson.user,owner.localuser);
}else{ }else{

View file

@ -60,7 +60,7 @@ class Message{
Message.contextmenu.addbutton("Copy message id",function(this:Message){ Message.contextmenu.addbutton("Copy message id",function(this:Message){
navigator.clipboard.writeText(this.id); 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(_=>{ Emoji.emojiPicker(e.x,e.y,this.localuser).then(_=>{
this.reactionToggle(_); this.reactionToggle(_);
}); });
@ -555,7 +555,7 @@ class Message{
for (const i in this.reactions) { for (const i in this.reactions) {
const reaction = this.reactions[i]; const reaction = this.reactions[i];
if ((reaction.emoji.id && reaction.emoji.id == emoji.id) || (!reaction.emoji.id && reaction.emoji.name == emoji.name)) { 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(); this.updateReactions();
break; break;
} }

View file

@ -8,7 +8,6 @@ import { SnowFlake } from "./snowflake.js";
import { presencejson, userjson } from "./jsontypes.js"; import { presencejson, userjson } from "./jsontypes.js";
class User{ class User{
static userids={};
owner:Localuser; owner:Localuser;
hypotheticalpfp:boolean; hypotheticalpfp:boolean;
snowflake:SnowFlake<User>; snowflake:SnowFlake<User>;
@ -127,15 +126,12 @@ class User{
return (us.hasPermission("BAN_MEMBERS"))||false; return (us.hasPermission("BAN_MEMBERS"))||false;
}); });
} }
static clear(){
this.userids={};
}
static checkuser(user:User|userjson,owner:Localuser):User{ static checkuser(user:User|userjson,owner:Localuser):User{
if(User.userids[user.id]){ if(owner.userMap.has(user.id)){
return User.userids[user.id]; return owner.userMap.get(user.id) as User;
}else{ }else{
const tempuser=new User(user as userjson,owner,true) const tempuser=new User(user as userjson,owner,true)
User.userids[user.id]=tempuser; owner.userMap.set(user.id,tempuser);
return tempuser; return tempuser;
} }
} }