fixed message deleting bug

This commit is contained in:
MathMan05 2024-09-14 17:32:52 -05:00
parent 4b0bf6bb59
commit aaab591bee
4 changed files with 47 additions and 14 deletions

View file

@ -160,6 +160,9 @@ class Channel extends SnowFlake {
} }
else { else {
if (this.idToNext.has(id)) { 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); return this.idToNext.get(id);
} }
else if (this.lastmessage?.id !== id) { else if (this.lastmessage?.id !== id) {

View file

@ -220,36 +220,52 @@ class Message extends SnowFlake {
}); });
} }
deleteEvent() { deleteEvent() {
console.log("deleted");
if (this.div) { if (this.div) {
this.div.remove();
this.div.innerHTML = ""; this.div.innerHTML = "";
this.div = undefined; this.div = undefined;
} }
const prev = this.channel.idToPrev.get(this.id); const prev = this.channel.idToPrev.get(this.id);
const next = this.channel.idToNext.get(this.id); const next = this.channel.idToNext.get(this.id);
if (prev) { this.channel.idToPrev.delete(this.id);
this.channel.idToPrev.delete(this.id); this.channel.idToNext.delete(this.id);
} this.channel.messages.delete(this.id);
if (next) {
this.channel.idToNext.delete(this.id);
}
if (prev && next) { if (prev && next) {
this.channel.idToPrev.set(next, prev); this.channel.idToPrev.set(next, prev);
this.channel.idToNext.set(prev, next); this.channel.idToNext.set(prev, next);
} }
else if (prev) {
this.channel.idToNext.delete(prev);
}
else if (next) {
this.channel.idToPrev.delete(next);
}
if (prev) { if (prev) {
const prevmessage = this.channel.messages.get(prev); const prevmessage = this.channel.messages.get(prev);
if (prevmessage) { if (prevmessage) {
prevmessage.generateMessage(); prevmessage.generateMessage();
} }
} }
if (this.channel.lastmessage === this) { if (this.channel.lastmessage === this || this.channel.lastmessageid === this.id) {
if (prev) { if (prev) {
this.channel.lastmessage = this.channel.messages.get(prev); this.channel.lastmessage = this.channel.messages.get(prev);
this.channel.lastmessageid = prev;
} }
else { else {
this.channel.lastmessage = undefined; 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; reactdiv;
blockedPropigate() { blockedPropigate() {

View file

@ -174,6 +174,7 @@ class Channel extends SnowFlake{
} }
}else{ }else{
if(this.idToNext.has(id)){ 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); return this.idToNext.get(id);
}else if(this.lastmessage?.id!==id){ }else if(this.lastmessage?.id!==id){
await this.grabAfter(id); await this.grabAfter(id);

View file

@ -218,21 +218,24 @@ class Message extends SnowFlake{
}); });
} }
deleteEvent(){ deleteEvent(){
console.log("deleted")
if(this.div){ if(this.div){
this.div.remove();
this.div.innerHTML=""; this.div.innerHTML="";
this.div=undefined; this.div=undefined;
} }
const prev=this.channel.idToPrev.get(this.id); const prev=this.channel.idToPrev.get(this.id);
const next=this.channel.idToNext.get(this.id); const next=this.channel.idToNext.get(this.id);
if(prev){ this.channel.idToPrev.delete(this.id);
this.channel.idToPrev.delete(this.id); this.channel.idToNext.delete(this.id);
} this.channel.messages.delete(this.id);
if(next){
this.channel.idToNext.delete(this.id);
}
if(prev&&next){ if(prev&&next){
this.channel.idToPrev.set(next,prev); this.channel.idToPrev.set(next,prev);
this.channel.idToNext.set(prev,next); this.channel.idToNext.set(prev,next);
}else if(prev){
this.channel.idToNext.delete(prev);
}else if(next){
this.channel.idToPrev.delete(next);
} }
if(prev){ if(prev){
const prevmessage=this.channel.messages.get(prev); const prevmessage=this.channel.messages.get(prev);
@ -240,13 +243,23 @@ class Message extends SnowFlake{
prevmessage.generateMessage(); prevmessage.generateMessage();
} }
} }
if(this.channel.lastmessage===this){ if(this.channel.lastmessage===this||this.channel.lastmessageid===this.id){
if(prev){ if(prev){
this.channel.lastmessage=this.channel.messages.get(prev); this.channel.lastmessage=this.channel.messages.get(prev);
this.channel.lastmessageid=prev;
}else{ }else{
this.channel.lastmessage=undefined; 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<HTMLDivElement>; reactdiv:WeakRef<HTMLDivElement>;
blockedPropigate(){ blockedPropigate(){