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

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

View File

@@ -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<Member|undefined>{
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{

View File

@@ -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;
}

View File

@@ -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<User>;
@@ -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;
}
}