From aaab591bee92bc1ce6bef67e279264a11c7f6762 Mon Sep 17 00:00:00 2001 From: MathMan05 Date: Sat, 14 Sep 2024 17:32:52 -0500 Subject: [PATCH] fixed message deleting bug --- .dist/channel.js | 3 +++ .dist/message.js | 30 +++++++++++++++++++++++------- webpage/channel.ts | 1 + webpage/message.ts | 27 ++++++++++++++++++++------- 4 files changed, 47 insertions(+), 14 deletions(-) diff --git a/.dist/channel.js b/.dist/channel.js index c06d558..5f81e2f 100644 --- a/.dist/channel.js +++ b/.dist/channel.js @@ -160,6 +160,9 @@ class Channel extends SnowFlake { } else { if (this.idToNext.has(id)) { + if (!this.messages.has(this.idToNext.get(id))) { + console.error("how did we get here?"); + } return this.idToNext.get(id); } else if (this.lastmessage?.id !== id) { diff --git a/.dist/message.js b/.dist/message.js index 37790f5..794eebf 100644 --- a/.dist/message.js +++ b/.dist/message.js @@ -220,36 +220,52 @@ class Message extends SnowFlake { }); } deleteEvent() { + console.log("deleted"); if (this.div) { + this.div.remove(); this.div.innerHTML = ""; this.div = undefined; } const prev = this.channel.idToPrev.get(this.id); const next = this.channel.idToNext.get(this.id); - if (prev) { - this.channel.idToPrev.delete(this.id); - } - if (next) { - this.channel.idToNext.delete(this.id); - } + this.channel.idToPrev.delete(this.id); + this.channel.idToNext.delete(this.id); + this.channel.messages.delete(this.id); if (prev && next) { this.channel.idToPrev.set(next, prev); this.channel.idToNext.set(prev, next); } + else if (prev) { + this.channel.idToNext.delete(prev); + } + else if (next) { + this.channel.idToPrev.delete(next); + } if (prev) { const prevmessage = this.channel.messages.get(prev); if (prevmessage) { prevmessage.generateMessage(); } } - if (this.channel.lastmessage === this) { + if (this.channel.lastmessage === this || this.channel.lastmessageid === this.id) { if (prev) { this.channel.lastmessage = this.channel.messages.get(prev); + this.channel.lastmessageid = prev; } else { this.channel.lastmessage = undefined; + this.channel.lastmessageid = undefined; } } + if (this.channel.lastreadmessageid === this.id) { + if (prev) { + this.channel.lastreadmessageid = prev; + } + else { + this.channel.lastreadmessageid = undefined; + } + } + console.log("deleted done"); } reactdiv; blockedPropigate() { diff --git a/webpage/channel.ts b/webpage/channel.ts index 2e61250..78b7528 100644 --- a/webpage/channel.ts +++ b/webpage/channel.ts @@ -174,6 +174,7 @@ class Channel extends SnowFlake{ } }else{ if(this.idToNext.has(id)){ + if(!this.messages.has(this.idToNext.get(id))){console.error("how did we get here?")} return this.idToNext.get(id); }else if(this.lastmessage?.id!==id){ await this.grabAfter(id); diff --git a/webpage/message.ts b/webpage/message.ts index 8d6afd4..5f4795a 100644 --- a/webpage/message.ts +++ b/webpage/message.ts @@ -218,21 +218,24 @@ class Message extends SnowFlake{ }); } deleteEvent(){ + console.log("deleted") if(this.div){ + this.div.remove(); this.div.innerHTML=""; this.div=undefined; } const prev=this.channel.idToPrev.get(this.id); const next=this.channel.idToNext.get(this.id); - if(prev){ - this.channel.idToPrev.delete(this.id); - } - if(next){ - this.channel.idToNext.delete(this.id); - } + this.channel.idToPrev.delete(this.id); + this.channel.idToNext.delete(this.id); + this.channel.messages.delete(this.id); if(prev&&next){ this.channel.idToPrev.set(next,prev); this.channel.idToNext.set(prev,next); + }else if(prev){ + this.channel.idToNext.delete(prev); + }else if(next){ + this.channel.idToPrev.delete(next); } if(prev){ const prevmessage=this.channel.messages.get(prev); @@ -240,13 +243,23 @@ class Message extends SnowFlake{ prevmessage.generateMessage(); } } - if(this.channel.lastmessage===this){ + if(this.channel.lastmessage===this||this.channel.lastmessageid===this.id){ if(prev){ this.channel.lastmessage=this.channel.messages.get(prev); + this.channel.lastmessageid=prev; }else{ this.channel.lastmessage=undefined; + this.channel.lastmessageid=undefined; } } + if(this.channel.lastreadmessageid===this.id){ + if(prev){ + this.channel.lastreadmessageid=prev; + }else{ + this.channel.lastreadmessageid=undefined; + } + } + console.log("deleted done") } reactdiv:WeakRef; blockedPropigate(){