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();
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();

View file

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

View file

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

View file

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

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