From 3894fcb97625a4362783700d910aeac3d992006b Mon Sep 17 00:00:00 2001 From: MathMan05 Date: Mon, 26 Aug 2024 14:16:01 -0500 Subject: [PATCH] remove more uses of the deprictated function --- .dist/channel.js | 96 ++++++++++++++++++++--------------------- .dist/direct.js | 12 +++--- .dist/message.js | 36 ++++++++++------ tsconfig.json | 2 +- webpage/channel.ts | 105 ++++++++++++++++++++++----------------------- webpage/direct.ts | 12 +++--- webpage/guild.ts | 2 +- webpage/message.ts | 36 ++++++++++------ 8 files changed, 156 insertions(+), 145 deletions(-) diff --git a/.dist/channel.js b/.dist/channel.js index 6bfc692..2865bae 100644 --- a/.dist/channel.js +++ b/.dist/channel.js @@ -154,23 +154,23 @@ class Channel { } setUpInfiniteScroller() { this.infinite = new InfiniteScroller(async function (id, offset) { - const snowflake = this.messages.get(id).snowflake; + const snowflake = id; if (offset === 1) { if (this.idToPrev.has(snowflake)) { - return this.idToPrev.get(snowflake)?.id; + return this.idToPrev.get(snowflake); } else { await this.grabBefore(id); - return this.idToPrev.get(snowflake)?.id; + return this.idToPrev.get(snowflake); } } else { if (this.idToNext.has(snowflake)) { - return this.idToNext.get(snowflake)?.id; + return this.idToNext.get(snowflake); } else if (this.lastmessage?.id !== id) { await this.grabAfter(id); - return this.idToNext.get(snowflake)?.id; + return this.idToNext.get(snowflake); } else { console.log("at bottom"); @@ -237,12 +237,12 @@ class Channel { this.topic = json.topic; this.nsfw = json.nsfw; this.position = json.position; - this.lastreadmessageid = null; + this.lastreadmessageid = undefined; if (json.last_message_id) { - this.lastmessageid = SnowFlake.getSnowFlakeFromID(json.last_message_id, Message); + this.lastmessageid = json.last_message_id; } else { - this.lastmessageid = null; + this.lastmessageid = undefined; } this.setUpInfiniteScroller(); } @@ -259,7 +259,7 @@ class Channel { return this.owner.info; } readStateInfo(json) { - this.lastreadmessageid = SnowFlake.getSnowFlakeFromID(json.last_message_id, Message); + this.lastreadmessageid = json.last_message_id; this.mentions = json.mention_count; this.mentions ??= 0; this.lastpin = json.last_pin_timestamp; @@ -626,9 +626,9 @@ class Channel { } } async getmessage(id) { - const snowflake = SnowFlake.getSnowFlakeFromID(id, Message); - if (snowflake.getObject()) { - return snowflake.getObject(); + const message = this.messages.get(id); + if (message) { + return message; } else { const gety = await fetch(this.info.api + "/channels/" + this.snowflake + "/messages?limit=1&around=" + id, { headers: this.headers }); @@ -705,7 +705,7 @@ class Channel { return; } ; - if (this.lastreadmessageid && this.lastreadmessageid.getObject()) { + if (this.lastreadmessageid && this.messages.has(this.lastreadmessageid)) { return; } const j = await fetch(this.info.api + "/channels/" + this.snowflake + "/messages?limit=100", { @@ -719,8 +719,8 @@ class Channel { for (const thing of response) { const message = new Message(thing, this); if (prev) { - this.idToNext.set(message.snowflake, prev.snowflake); - this.idToPrev.set(prev.snowflake, message.snowflake); + this.idToNext.set(message.id, prev.id); + this.idToPrev.set(prev.id, message.id); } else { this.lastmessage = message; @@ -747,7 +747,7 @@ class Channel { await fetch(this.info.api + "/channels/" + this.id + "/messages?limit=100&after=" + id, { headers: this.headers }).then((j) => { return j.json(); }).then(response => { - let previd = SnowFlake.getSnowFlakeFromID(id, Message); + let previd = id; for (const i in response) { let messager; let willbreak = false; @@ -758,9 +758,9 @@ class Channel { messager = SnowFlake.getSnowFlakeFromID(response[i].id, Message).getObject(); willbreak = true; } - this.idToPrev.set(messager.snowflake, previd); - this.idToNext.set(previd, messager.snowflake); - previd = messager.snowflake; + this.idToPrev.set(messager.id, previd); + this.idToNext.set(previd, messager.id); + previd = messager.id; this.messageids.set(messager.snowflake, messager); if (willbreak) { break; @@ -772,33 +772,33 @@ class Channel { } topid; async grabBefore(id) { - if (this.topid && id === this.topid.id) { + if (this.topid && id === this.topid) { return; } - await fetch(this.info.api + "/channels/" + this.snowflake + "/messages?before=" + id + "&limit=100", { + await fetch(this.info.api + "/channels/" + this.id + "/messages?before=" + id + "&limit=100", { headers: this.headers }).then((j) => { return j.json(); }).then((response) => { if (response.length < 100) { this.allthewayup = true; if (response.length === 0) { - this.topid = SnowFlake.getSnowFlakeFromID(id, Message); + this.topid = id; } } - let previd = SnowFlake.getSnowFlakeFromID(id, Message); + let previd = id; for (const i in response) { let messager; let willbreak = false; - if (!SnowFlake.hasSnowFlakeFromID(response[i].id, Message)) { - messager = new Message(response[i], this); - } - else { + if (this.messages.has(response[i].id)) { console.log("flaky"); - messager = SnowFlake.getSnowFlakeFromID(response[i].id, Message).getObject(); + messager = this.messages.get(response[i].id); willbreak = true; } - this.idToNext.set(messager.snowflake, previd); - this.idToPrev.set(previd, messager.snowflake); - previd = messager.snowflake; + else { + messager = new Message(response[i], this); + } + this.idToNext.set(messager.id, previd); + this.idToPrev.set(previd, messager.id); + previd = messager.id; this.messageids.set(messager.snowflake, messager); if (+i === response.length - 1 && response.length < 100) { this.topid = previd; @@ -840,13 +840,13 @@ class Channel { const removetitle = document.getElementById("removetitle"); //messages.innerHTML=""; let id; - if (this.lastreadmessageid && this.lastreadmessageid.getObject()) { + if (this.lastreadmessageid && this.messages.has(this.lastreadmessageid)) { id = this.lastreadmessageid; } else if (this.lastreadmessageid && (id = this.findClosest(this.lastreadmessageid))) { } - else if (this.lastmessage && this.lastmessage.snowflake) { - id = this.goBackIds(this.lastmessage.snowflake, 50); + else if (this.lastmessageid && this.messages.has(this.lastmessageid)) { + id = this.goBackIds(this.lastmessageid, 50); } if (!id) { if (!removetitle) { @@ -863,11 +863,11 @@ class Channel { else if (removetitle) { removetitle.remove(); } - messages.append(await this.infinite.getDiv(id.id)); + messages.append(await this.infinite.getDiv(id)); this.infinite.updatestuff(); this.infinite.watchForChange().then(async (_) => { //await new Promise(resolve => setTimeout(resolve, 0)); - this.infinite.focus(id.id, false); //if someone could figure out how to make this work correctly without this, that's be great :P + this.infinite.focus(id, false); //if someone could figure out how to make this work correctly without this, that's be great :P loading.classList.remove("loading"); }); //this.infinite.focus(id.id,false); @@ -890,22 +890,18 @@ class Channel { } return id; } - findClosest(snowflake) { - if (!this.lastmessage) + findClosest(id) { + if (!this.lastmessageid || !id) return; - let flake = this.lastmessage.snowflake; - if (!snowflake) { - return; - } - ; - const time = snowflake.getUnixTime(); - let flaketime = flake.getUnixTime(); + let flake = this.lastmessageid; + const time = Number((BigInt(id) >> 22n) + 1420070400000n); + let flaketime = Number((BigInt(flake) >> 22n) + 1420070400000n); while (flake && time < flaketime) { flake = this.idToPrev.get(flake); if (!flake) { return undefined; } - flaketime = flake.getUnixTime(); + flaketime = Number((BigInt(flake) >> 22n) + 1420070400000n); } return flake; } @@ -1013,13 +1009,13 @@ class Channel { const messagez = new Message(messagep.d, this); this.lastmessage = messagez; if (this.lastmessageid) { - this.idToNext.set(this.lastmessageid, messagez.snowflake); - this.idToPrev.set(messagez.snowflake, this.lastmessageid); + this.idToNext.set(this.lastmessageid, messagez.id); + this.idToPrev.set(messagez.id, this.lastmessageid); } - this.lastmessageid = messagez.snowflake; + this.lastmessageid = messagez.id; this.messageids.set(messagez.snowflake, messagez); if (messagez.author === this.localuser.user) { - this.lastreadmessageid = messagez.snowflake; + this.lastreadmessageid = messagez.id; if (this.myhtml) { this.myhtml.classList.remove("cunread"); } diff --git a/.dist/direct.js b/.dist/direct.js index 46ae8ca..3ba97c7 100644 --- a/.dist/direct.js +++ b/.dist/direct.js @@ -95,12 +95,12 @@ class Group extends Channel { this.guild_id = "@me"; this.messageids = new Map(); this.permission_overwrites = new Map(); - this.lastmessageid = SnowFlake.getSnowFlakeFromID(json.last_message_id, Message); + this.lastmessageid = json.last_message_id; this.lastmessageid ??= null; this.mentions = 0; this.setUpInfiniteScroller(); if (this.lastmessageid) { - this.position = this.lastmessageid.getUnixTime(); + this.position = Number((BigInt(this.lastmessageid) >> 22n) + 1420070400000n); } this.position = -Math.max(this.position, this.snowflake.getUnixTime()); } @@ -139,13 +139,13 @@ class Group extends Channel { messageCreate(messagep) { const messagez = new Message(messagep.d, this); if (this.lastmessageid) { - this.idToNext.set(this.lastmessageid, messagez.snowflake); + this.idToNext.set(this.lastmessageid, messagez.id); } - this.idToPrev.set(messagez.snowflake, this.lastmessageid); - this.lastmessageid = messagez.snowflake; + this.idToPrev.set(messagez.id, this.lastmessageid); + this.lastmessageid = messagez.id; this.messageids.set(messagez.snowflake, messagez); if (messagez.author === this.localuser.user) { - this.lastreadmessageid = messagez.snowflake; + this.lastreadmessageid = messagez.id; if (this.myhtml) { this.myhtml.classList.remove("cunread"); } diff --git a/.dist/message.js b/.dist/message.js index 77bce65..0294ed0 100644 --- a/.dist/message.js +++ b/.dist/message.js @@ -55,7 +55,7 @@ class Message { Message.contextmenu.addbutton("Copy message id", function () { navigator.clipboard.writeText(this.id); }); - Message.contextmenu.addsubmenu("Add reaction", function (e) { + Message.contextmenu.addsubmenu("Add reaction", function (arg, e) { Emoji.emojiPicker(e.x, e.y, this.localuser).then(_ => { this.reactionToggle(_); }); @@ -223,25 +223,28 @@ class Message { this.div.innerHTML = ""; this.div = undefined; } - const prev = this.channel.idToPrev.get(this.snowflake); - const next = this.channel.idToNext.get(this.snowflake); + const prev = this.channel.idToPrev.get(this.id); + const next = this.channel.idToNext.get(this.id); if (prev) { - this.channel.idToPrev.delete(this.snowflake); + this.channel.idToPrev.delete(this.id); } if (next) { - this.channel.idToNext.delete(this.snowflake); + this.channel.idToNext.delete(this.id); } if (prev && next) { this.channel.idToPrev.set(next, prev); this.channel.idToNext.set(prev, next); } this.channel.messageids.delete(this.snowflake); - if (prev && prev.getObject()) { - prev.getObject().generateMessage(); + if (prev) { + const prevmessage = this.channel.messages.get(prev); + if (prevmessage) { + prevmessage.generateMessage(); + } } if (this.channel.lastmessage === this) { if (prev) { - this.channel.lastmessage = prev.getObject(); + this.channel.lastmessage = this.channel.messages.get(prev); } else { this.channel.lastmessage = undefined; @@ -250,7 +253,12 @@ class Message { } reactdiv; blockedPropigate() { - const premessage = this.channel.idToPrev.get(this.snowflake)?.getObject(); + const previd = this.channel.idToPrev.get(this.id); + if (!previd) { + this.generateMessage(); + return; + } + const premessage = this.channel.messages.get(previd); if (premessage?.author === this.author) { premessage.blockedPropigate(); } @@ -262,7 +270,7 @@ class Message { if (!this.div) return; if (!premessage) { - premessage = this.channel.idToPrev.get(this.snowflake)?.getObject(); + premessage = this.channel.messages.get(this.channel.idToPrev.get(this.id)); } const div = this.div; if (this === this.channel.replyingto) { @@ -284,7 +292,7 @@ class Message { let next = this; while (next?.author === this.author) { next.generateMessage(undefined); - next = this.channel.idToNext.get(next.snowflake)?.getObject(); + next = this.channel.messages.get(this.channel.idToNext.get(next.id)); } if (this.channel.infinite.scroll && scroll) { this.channel.infinite.scroll.scrollTop = scroll; @@ -304,10 +312,10 @@ class Message { build.classList.add("blocked", "topMessage"); const span = document.createElement("span"); let count = 1; - let next = this.channel.idToNext.get(this.snowflake)?.getObject(); + let next = this.channel.messages.get(this.channel.idToNext.get(this.id)); while (next?.author === this.author) { count++; - next = this.channel.idToNext.get(next.snowflake)?.getObject(); + next = this.channel.messages.get(this.channel.idToNext.get(next.id)); } span.textContent = `You have this user blocked, click to see the ${count} blocked messages.`; build.append(span); @@ -317,7 +325,7 @@ class Message { let next = this; while (next?.author === this.author) { next.generateMessage(undefined, true); - next = this.channel.idToNext.get(next.snowflake)?.getObject(); + next = this.channel.messages.get(this.channel.idToNext.get(next.id)); console.log("loopy"); } if (this.channel.infinite.scroll && scroll) { diff --git a/tsconfig.json b/tsconfig.json index e59ead1..71aba3f 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -9,7 +9,7 @@ "removeComments": false, "noImplicitThis":true, "useUnknownInCatchVariables":true, - "strictNullChecks":true + "strictNullChecks":false }, "include": [ "./webpage/*.ts" diff --git a/webpage/channel.ts b/webpage/channel.ts index 3bb081f..dccc116 100644 --- a/webpage/channel.ts +++ b/webpage/channel.ts @@ -35,8 +35,8 @@ class Channel{ topic:string; nsfw:boolean; position:number; - lastreadmessageid:SnowFlake|null; - lastmessageid:SnowFlake|null; + lastreadmessageid:string|undefined; + lastmessageid:string|undefined; mentions:number; lastpin:string; move_id:SnowFlake|null; @@ -46,8 +46,8 @@ class Channel{ static contextmenu=new Contextmenu("channel menu"); replyingto:Message|null; infinite:InfiniteScroller; - idToPrev:Map,SnowFlake>=new Map(); - idToNext:Map,SnowFlake>=new Map(); + idToPrev:Map=new Map(); + idToNext:Map=new Map(); messages:Map=new Map(); get id(){ return this.snowflake.id; @@ -170,20 +170,20 @@ class Channel{ } setUpInfiniteScroller(){ this.infinite=new InfiniteScroller(async function(this:Channel,id:string,offset:number):Promise{ - const snowflake=(this.messages.get(id) as Message).snowflake; + const snowflake=id; if(offset===1){ if(this.idToPrev.has(snowflake)){ - return this.idToPrev.get(snowflake)?.id; + return this.idToPrev.get(snowflake); }else{ await this.grabBefore(id); - return this.idToPrev.get(snowflake)?.id; + return this.idToPrev.get(snowflake); } }else{ if(this.idToNext.has(snowflake)){ - return this.idToNext.get(snowflake)?.id; + return this.idToNext.get(snowflake); }else if(this.lastmessage?.id!==id){ await this.grabAfter(id); - return this.idToNext.get(snowflake)?.id; + return this.idToNext.get(snowflake); }else{ console.log("at bottom") } @@ -246,11 +246,11 @@ class Channel{ this.topic=json.topic; this.nsfw=json.nsfw; this.position=json.position; - this.lastreadmessageid=null; + this.lastreadmessageid=undefined; if(json.last_message_id){ - this.lastmessageid=SnowFlake.getSnowFlakeFromID(json.last_message_id,Message); + this.lastmessageid=json.last_message_id; }else{ - this.lastmessageid=null; + this.lastmessageid=undefined; } this.setUpInfiniteScroller(); } @@ -267,7 +267,7 @@ class Channel{ return this.owner.info; } readStateInfo(json:readyjson["d"]["read_state"]["entries"][0]){ - this.lastreadmessageid=SnowFlake.getSnowFlakeFromID(json.last_message_id,Message); + this.lastreadmessageid=json.last_message_id; this.mentions=json.mention_count; this.mentions??=0; this.lastpin=json.last_pin_timestamp; @@ -629,9 +629,9 @@ class Channel{ } } async getmessage(id:string):Promise{ - const snowflake=SnowFlake.getSnowFlakeFromID(id,Message) as SnowFlake; - if(snowflake.getObject()){ - return snowflake.getObject(); + const message=this.messages.get(id); + if(message){ + return message; }else{ const gety=await fetch(this.info.api+"/channels/"+this.snowflake+"/messages?limit=1&around="+id,{headers:this.headers}) const json=await gety.json(); @@ -705,7 +705,7 @@ class Channel{ lastmessage:Message|undefined; async putmessages(){ if(this.allthewayup){return}; - if(this.lastreadmessageid&&this.lastreadmessageid.getObject()){ + if(this.lastreadmessageid&&this.messages.has(this.lastreadmessageid)){ return } const j=await fetch(this.info.api+"/channels/"+this.snowflake+"/messages?limit=100",{ @@ -720,8 +720,8 @@ class Channel{ for(const thing of response){ const message=new Message(thing,this); if(prev){ - this.idToNext.set(message.snowflake,prev.snowflake); - this.idToPrev.set(prev.snowflake,message.snowflake); + this.idToNext.set(message.id,prev.id); + this.idToPrev.set(prev.id,message.id); }else{ this.lastmessage=message; } @@ -747,7 +747,7 @@ class Channel{ await fetch(this.info.api+"/channels/"+this.id+"/messages?limit=100&after="+id,{ headers:this.headers }).then((j)=>{return j.json()}).then(response=>{ - let previd:SnowFlake=SnowFlake.getSnowFlakeFromID(id,Message); + let previd:string=id; for(const i in response){ let messager:Message; let willbreak=false @@ -757,9 +757,9 @@ class Channel{ messager=SnowFlake.getSnowFlakeFromID(response[i].id,Message).getObject(); willbreak=true; } - this.idToPrev.set(messager.snowflake,previd); - this.idToNext.set(previd,messager.snowflake); - previd=messager.snowflake; + this.idToPrev.set(messager.id,previd); + this.idToNext.set(previd,messager.id); + previd=messager.id; this.messageids.set(messager.snowflake,messager); if(willbreak){ break; @@ -769,36 +769,36 @@ class Channel{ }) return; } - topid:SnowFlake; + topid:string; async grabBefore(id:string){ - if(this.topid&&id===this.topid.id){ + if(this.topid&&id===this.topid){ return; } - await fetch(this.info.api+"/channels/"+this.snowflake+"/messages?before="+id+"&limit=100",{ + await fetch(this.info.api+"/channels/"+this.id+"/messages?before="+id+"&limit=100",{ headers:this.headers }).then((j)=>{return j.json()}).then((response:messagejson[])=>{ if(response.length<100){ this.allthewayup=true; if(response.length===0){ - this.topid=SnowFlake.getSnowFlakeFromID(id,Message); + this.topid=id; } } - let previd=SnowFlake.getSnowFlakeFromID(id,Message) as SnowFlake; + let previd=id; for(const i in response){ let messager:Message; let willbreak=false; - if(!SnowFlake.hasSnowFlakeFromID(response[i].id,Message)){ - messager=new Message(response[i],this); - }else{ + if(this.messages.has(response[i].id)){ console.log("flaky") - messager=SnowFlake.getSnowFlakeFromID(response[i].id,Message).getObject(); + messager=this.messages.get(response[i].id) as Message; willbreak=true; + }else{ + messager=new Message(response[i],this); } - this.idToNext.set(messager.snowflake,previd); - this.idToPrev.set(previd,messager.snowflake); - previd=messager.snowflake; + this.idToNext.set(messager.id,previd); + this.idToPrev.set(previd,messager.id); + previd=messager.id; this.messageids.set(messager.snowflake,messager); if(+i===response.length-1&&response.length<100){ @@ -839,13 +839,13 @@ class Channel{ const loading=document.getElementById("loadingdiv") as HTMLDivElement; const removetitle=document.getElementById("removetitle"); //messages.innerHTML=""; - let id:SnowFlake|undefined; - if(this.lastreadmessageid&&this.lastreadmessageid.getObject()){ + let id:string|undefined; + if(this.lastreadmessageid&&this.messages.has(this.lastreadmessageid)){ id=this.lastreadmessageid; }else if(this.lastreadmessageid&&(id=this.findClosest(this.lastreadmessageid))){ - }else if(this.lastmessage&&this.lastmessage.snowflake){ - id=this.goBackIds(this.lastmessage.snowflake,50); + }else if(this.lastmessageid&&this.messages.has(this.lastmessageid)){ + id=this.goBackIds(this.lastmessageid,50); } if(!id){ if(!removetitle){ @@ -861,17 +861,17 @@ class Channel{ }else if(removetitle){ removetitle.remove(); } - messages.append(await this.infinite.getDiv(id.id)); + messages.append(await this.infinite.getDiv(id)); this.infinite.updatestuff(); this.infinite.watchForChange().then(async _=>{ //await new Promise(resolve => setTimeout(resolve, 0)); - this.infinite.focus(id.id,false);//if someone could figure out how to make this work correctly without this, that's be great :P + this.infinite.focus(id,false);//if someone could figure out how to make this work correctly without this, that's be great :P loading.classList.remove("loading"); }); //this.infinite.focus(id.id,false); } - private goBackIds(id:SnowFlake,back:number,returnifnotexistant=true):SnowFlake|undefined{ + private goBackIds(id:string,back:number,returnifnotexistant=true):string|undefined{ while(back!==0){ const nextid=this.idToPrev.get(id); if(nextid){ @@ -887,19 +887,18 @@ class Channel{ } return id; } - private findClosest(snowflake:SnowFlake){ - if(!this.lastmessage) return; - let flake:SnowFlake|null|undefined=this.lastmessage.snowflake; - if(!snowflake){return}; - const time=snowflake.getUnixTime(); - let flaketime=flake.getUnixTime() + private findClosest(id:string|undefined){ + if(!this.lastmessageid||!id) return; + let flake:string|undefined=this.lastmessageid; + const time=Number((BigInt(id)>>22n)+1420070400000n); + let flaketime=Number((BigInt(flake)>>22n)+1420070400000n); while(flake&&time>22n)+1420070400000n); } return flake; } @@ -999,15 +998,15 @@ class Channel{ const messagez=new Message(messagep.d,this); this.lastmessage=messagez; if(this.lastmessageid){ - this.idToNext.set(this.lastmessageid,messagez.snowflake); - this.idToPrev.set(messagez.snowflake,this.lastmessageid); + this.idToNext.set(this.lastmessageid,messagez.id); + this.idToPrev.set(messagez.id,this.lastmessageid); } - this.lastmessageid=messagez.snowflake; + this.lastmessageid=messagez.id; this.messageids.set(messagez.snowflake,messagez); if(messagez.author===this.localuser.user){ - this.lastreadmessageid=messagez.snowflake; + this.lastreadmessageid=messagez.id; if(this.myhtml){ this.myhtml.classList.remove("cunread"); } diff --git a/webpage/direct.ts b/webpage/direct.ts index e258e47..92a18f6 100644 --- a/webpage/direct.ts +++ b/webpage/direct.ts @@ -101,12 +101,12 @@ class Group extends Channel{ this.guild_id="@me"; this.messageids=new Map(); this.permission_overwrites=new Map(); - this.lastmessageid=SnowFlake.getSnowFlakeFromID(json.last_message_id,Message); + this.lastmessageid=json.last_message_id; this.lastmessageid??=null; this.mentions=0; this.setUpInfiniteScroller(); if(this.lastmessageid){ - this.position=this.lastmessageid.getUnixTime() + this.position=Number((BigInt(this.lastmessageid)>>22n)+1420070400000n); } this.position=-Math.max(this.position,this.snowflake.getUnixTime()); } @@ -145,13 +145,13 @@ class Group extends Channel{ messageCreate(messagep){ const messagez=new Message(messagep.d,this); if(this.lastmessageid){ - this.idToNext.set(this.lastmessageid,messagez.snowflake); + this.idToNext.set(this.lastmessageid,messagez.id); } - this.idToPrev.set(messagez.snowflake,this.lastmessageid); - this.lastmessageid=messagez.snowflake; + this.idToPrev.set(messagez.id,this.lastmessageid); + this.lastmessageid=messagez.id; this.messageids.set(messagez.snowflake,messagez); if(messagez.author===this.localuser.user){ - this.lastreadmessageid=messagez.snowflake; + this.lastreadmessageid=messagez.id; if(this.myhtml){ this.myhtml.classList.remove("cunread"); } diff --git a/webpage/guild.ts b/webpage/guild.ts index 2f8ed86..a71933d 100644 --- a/webpage/guild.ts +++ b/webpage/guild.ts @@ -384,7 +384,7 @@ class Guild{ return this.member.isAdmin() } async markAsRead(){ - const build:{read_states:{channel_id:SnowFlake,message_id:SnowFlake|null,read_state_type:number}[]}={read_states:[]}; + const build:{read_states:{channel_id:SnowFlake,message_id:string|null,read_state_type:number}[]}={read_states:[]}; for(const thing of this.channels){ if(thing.hasunreads){ build.read_states.push({channel_id:thing.snowflake,message_id:thing.lastmessageid,read_state_type:0}); diff --git a/webpage/message.ts b/webpage/message.ts index 50633ef..1d1846a 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:{x:number,y:number}){ + Message.contextmenu.addsubmenu("Add reaction",function(this:Message,arg,e:MouseEvent){ Emoji.emojiPicker(e.x,e.y,this.localuser).then(_=>{ this.reactionToggle(_); }); @@ -224,25 +224,28 @@ class Message{ this.div.innerHTML=""; this.div=undefined; } - const prev=this.channel.idToPrev.get(this.snowflake) as SnowFlake | null; - const next=this.channel.idToNext.get(this.snowflake) as SnowFlake | null; + const prev=this.channel.idToPrev.get(this.id); + const next=this.channel.idToNext.get(this.id); if(prev){ - this.channel.idToPrev.delete(this.snowflake) + this.channel.idToPrev.delete(this.id) } if(next){ - this.channel.idToNext.delete(this.snowflake) + this.channel.idToNext.delete(this.id) } if(prev&&next){ this.channel.idToPrev.set(next,prev); this.channel.idToNext.set(prev,next); } this.channel.messageids.delete(this.snowflake); - if(prev&&prev.getObject()){ - prev.getObject().generateMessage(); + if(prev){ + const prevmessage=this.channel.messages.get(prev); + if(prevmessage){ + prevmessage.generateMessage(); + } } if(this.channel.lastmessage===this){ if(prev){ - this.channel.lastmessage=prev.getObject(); + this.channel.lastmessage=this.channel.messages.get(prev); }else{ this.channel.lastmessage=undefined; } @@ -250,7 +253,12 @@ class Message{ } reactdiv:WeakRef; blockedPropigate(){ - const premessage=this.channel.idToPrev.get(this.snowflake)?.getObject(); + const previd=this.channel.idToPrev.get(this.id); + if(!previd){ + this.generateMessage(); + return; + } + const premessage=this.channel.messages.get(previd); if(premessage?.author===this.author){ premessage.blockedPropigate(); }else{ @@ -260,7 +268,7 @@ class Message{ generateMessage(premessage:Message|undefined=undefined,ignoredblock=false){ if(!this.div) return; if(!premessage){ - premessage=this.channel.idToPrev.get(this.snowflake)?.getObject(); + premessage=this.channel.messages.get(this.channel.idToPrev.get(this.id) as string); } const div=this.div; if(this===this.channel.replyingto){ @@ -283,7 +291,7 @@ class Message{ let next:Message|undefined=this; while(next?.author===this.author){ next.generateMessage(undefined); - next=this.channel.idToNext.get(next.snowflake)?.getObject(); + next=this.channel.messages.get(this.channel.idToNext.get(next.id) as string); } if(this.channel.infinite.scroll&&scroll){ this.channel.infinite.scroll.scrollTop=scroll; @@ -301,10 +309,10 @@ class Message{ build.classList.add("blocked","topMessage") const span=document.createElement("span"); let count=1; - let next=this.channel.idToNext.get(this.snowflake)?.getObject() + let next=this.channel.messages.get(this.channel.idToNext.get(this.id) as string); while(next?.author===this.author){ count++; - next=this.channel.idToNext.get(next.snowflake)?.getObject() + next=this.channel.messages.get(this.channel.idToNext.get(next.id) as string); } span.textContent=`You have this user blocked, click to see the ${count} blocked messages.`; build.append(span); @@ -314,7 +322,7 @@ class Message{ let next:Message|undefined=this; while(next?.author===this.author){ next.generateMessage(undefined,true); - next=this.channel.idToNext.get(next.snowflake)?.getObject(); + next=this.channel.messages.get(this.channel.idToNext.get(next.id) as string); console.log("loopy") } if(this.channel.infinite.scroll&&scroll){