From 2d619bf1ad7a3087fbfffd44464c85ef4ae1a505 Mon Sep 17 00:00:00 2001 From: Henry-Hiles Date: Wed, 14 Oct 2026 23:37:53 -0400 Subject: [PATCH] properly order historical timelines Fixes #117 --- lib/controllers/room_chat.dart | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/lib/controllers/room_chat.dart b/lib/controllers/room_chat.dart index 65dc203..0d0688e 100644 --- a/lib/controllers/room_chat.dart +++ b/lib/controllers/room_chat.dart @@ -65,14 +65,18 @@ class RoomChatController(final ChatParams info) ), ); - final events = context.before.add(context.event).addAll(context.after); + // `before` is in reverse chronological order + final events = context.before.reversed + .toIList() + .add(context.event) + .addAll(context.after); ref .read(RoomsController.provider.notifier) .update( .new({ info.roomId: Room( events: IMap.fromIterable( - events, + events.addAll(context.relatedEvents), keyMapper: (event) => event.rowId, ), ), @@ -185,16 +189,21 @@ class RoomChatController(final ChatParams info) .new({ info.roomId: Room( events: IMap.fromIterable( - paginationResponse.events, + paginationResponse.events.addAll( + paginationResponse.relatedEvents, + ), keyMapper: (event) => event.rowId, ), ), }), ); - final eventRowIds = paginationResponse.events - .map((element) => element.rowId) - .toIList(); + final eventRowIds = + (direction == .forward + ? paginationResponse.events + : paginationResponse.events.reversed) + .map((element) => element.rowId) + .toIList(); state = .data( .new(