From 97fe704f5a395f983070b01caae0712a8bfd01ce Mon Sep 17 00:00:00 2001 From: krille-chan Date: Fri, 7 Nov 2025 16:59:47 +0100 Subject: [PATCH] chore: Scroll to unread thread if last message is from a thread --- lib/pages/chat/chat.dart | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/lib/pages/chat/chat.dart b/lib/pages/chat/chat.dart index 40e540f88..54f6010cc 100644 --- a/lib/pages/chat/chat.dart +++ b/lib/pages/chat/chat.dart @@ -354,7 +354,12 @@ class ChatController extends State ); sendingClient = Matrix.of(context).client; - readMarkerEventId = room.hasNewMessages ? room.fullyRead : ''; + final lastEventThreadId = + room.lastEvent?.relationshipType == RelationshipTypes.thread + ? room.lastEvent?.relationshipEventId + : null; + readMarkerEventId = + room.hasNewMessages ? lastEventThreadId ?? room.fullyRead : ''; WidgetsBinding.instance.addObserver(this); _tryLoadTimeline(); if (kIsWeb) { @@ -387,7 +392,11 @@ class ChatController extends State loadTimelineFuture = _getTimeline(); try { await loadTimelineFuture; - if (initialEventId != null) scrollToEventId(initialEventId); + // We launched the chat with a given initial event ID: + if (initialEventId != null) { + scrollToEventId(initialEventId); + return; + } var readMarkerEventIndex = readMarkerEventId.isEmpty ? -1