From bb013ef29ea5b98ee83edc96235da716a16ccba2 Mon Sep 17 00:00:00 2001 From: Ajay Bura <32841439+ajbura@users.noreply.github.com> Date: Mon, 17 Aug 2026 14:59:55 +0530 Subject: [PATCH] jump to latest using empty timeline and back pagination to prevent live message lost --- src/client/room/ThreadTimeline.ts | 9 +-------- src/client/room/Timeline.ts | 11 +---------- src/client/room/TimelineBatchManager.ts | 4 ++++ 3 files changed, 6 insertions(+), 18 deletions(-) diff --git a/src/client/room/ThreadTimeline.ts b/src/client/room/ThreadTimeline.ts index 582247be..3cd05844 100644 --- a/src/client/room/ThreadTimeline.ts +++ b/src/client/room/ThreadTimeline.ts @@ -288,15 +288,8 @@ export class ThreadTimeline implements TimelineView, Disposable { this.range.setRange(MessageRange.atLiveEnd(this.batch.read.size)); return; } - const [err, result] = await this.getMessages(undefined, 'b', 80); - if (err) { - throw new Error(printMatrixError(err)); - } - - const { next_batch: prevToken, prev_batch: endToken, chunk } = result; - const messageEvents: MessageEventWithoutRoomId[] = this.relations.pickAndFilter(chunk); - this.batchManager.loadEvents(messageEvents, prevToken, endToken); + this.batchManager.reload(MessageBatch.emptyAtForwardEnd()); } public findEvent(eventId: string): MessageEventWithoutRoomId | undefined { diff --git a/src/client/room/Timeline.ts b/src/client/room/Timeline.ts index b98a82c7..f3f63468 100644 --- a/src/client/room/Timeline.ts +++ b/src/client/room/Timeline.ts @@ -281,17 +281,8 @@ export class Timeline implements TimelineView, Disposable { this.range.setRange(MessageRange.atLiveEnd(this.batch.read.size)); return; } - const [err, result] = await this.getMessages(undefined, 'b', 80); - if (err) { - throw new Error(printMatrixError(err)); - } - - const { end: prevToken, start: endToken, chunk } = result; - const messageEvents: MessageEventWithoutRoomId[] = this.relations.pickAndFilter(chunk); - - this.pickThreads(messageEvents); - this.batchManager.loadEvents(messageEvents, prevToken, endToken); + this.batchManager.reload(MessageBatch.emptyAtForwardEnd()); } public findEvent(eventId: string): MessageEventWithoutRoomId | undefined { diff --git a/src/client/room/TimelineBatchManager.ts b/src/client/room/TimelineBatchManager.ts index 61203c00..61a72a82 100644 --- a/src/client/room/TimelineBatchManager.ts +++ b/src/client/room/TimelineBatchManager.ts @@ -126,4 +126,8 @@ export class TimelineBatchManager { this.batch.publish(this.publishKey, newBatch); } + + public reload(batch: MessageBatch) { + this.batch.publish(this.publishKey, batch); + } }