fixed message deleting bug
This commit is contained in:
parent
4b0bf6bb59
commit
aaab591bee
4 changed files with 47 additions and 14 deletions
|
@ -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) {
|
||||||
|
|
|
@ -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() {
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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(){
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue