diff --git a/src/webpage/channel.ts b/src/webpage/channel.ts index af5ef5b..75e5bb0 100644 --- a/src/webpage/channel.ts +++ b/src/webpage/channel.ts @@ -56,8 +56,8 @@ class Channel extends SnowFlake { static contextmenu = new Contextmenu("channel menu"); replyingto!: Message | null; infinite!: InfiniteScroller; - idToPrev: Map = new Map(); - idToNext: Map = new Map(); + idToPrev: Map = new Map(); + idToNext: Map = new Map(); messages: Map = new Map(); voice?: Voice; bitrate: number = 128000; @@ -1206,6 +1206,9 @@ class Channel extends SnowFlake { return j.json(); }) .then((response) => { + if (response.length === 0) { + this.idToNext.set(id, undefined); + } let previd: string = id; for (const i in response) { let messager: Message; @@ -1243,6 +1246,7 @@ class Channel extends SnowFlake { this.allthewayup = true; if (response.length === 0) { this.topid = id; + this.idToPrev.set(id, undefined); } } let previd = id; diff --git a/src/webpage/direct.ts b/src/webpage/direct.ts index b139cde..a54ff10 100644 --- a/src/webpage/direct.ts +++ b/src/webpage/direct.ts @@ -392,7 +392,11 @@ class Group extends Channel { this.children = []; this.guild_id = "@me"; this.permission_overwrites = new Map(); - this.lastmessageid = json.last_message_id; + if (json.last_message_id) { + this.lastmessageid = json.last_message_id; + } else { + this.lastmessageid = undefined; + } this.mentions = 0; this.setUpInfiniteScroller(); this.updatePosition(); @@ -461,10 +465,12 @@ class Group extends Channel { messageCreate(messagep: {d: messagejson}) { this.mentions++; const messagez = new Message(messagep.d, this); + if (this.lastmessageid) { this.idToNext.set(this.lastmessageid, messagez.id); this.idToPrev.set(messagez.id, this.lastmessageid); } + this.idToNext.set(messagez.id, undefined); this.lastmessageid = messagez.id; if (messagez.author === this.localuser.user) {