From 8ae8dbe45e6b58f68c8c5b3ef690bce3ba013954 Mon Sep 17 00:00:00 2001 From: Krille Date: Sun, 28 Jul 2024 09:52:27 +0200 Subject: [PATCH 1/3] fix: Scroll to event missing the position --- lib/pages/chat/chat.dart | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/lib/pages/chat/chat.dart b/lib/pages/chat/chat.dart index 2592f560c..ccfb1eb84 100644 --- a/lib/pages/chat/chat.dart +++ b/lib/pages/chat/chat.dart @@ -29,6 +29,7 @@ import 'package:fluffychat/pages/chat/recording_dialog.dart'; import 'package:fluffychat/pages/chat_details/chat_details.dart'; import 'package:fluffychat/utils/error_reporter.dart'; import 'package:fluffychat/utils/matrix_sdk_extensions/event_extension.dart'; +import 'package:fluffychat/utils/matrix_sdk_extensions/filtered_timeline_extension.dart'; import 'package:fluffychat/utils/matrix_sdk_extensions/matrix_locals.dart'; import 'package:fluffychat/utils/platform_infos.dart'; import 'package:fluffychat/widgets/app_lock.dart'; @@ -292,7 +293,7 @@ class ChatController extends State if (timeline?.events.any((event) => event.eventId == fullyRead) ?? false) { Logs().v('Scroll up to visible event', fullyRead); - setReadMarker(); + scrollToEventId(fullyRead); return; } if (!mounted) return; @@ -901,7 +902,10 @@ class ChatController extends State } void scrollToEventId(String eventId) async { - final eventIndex = timeline!.events.indexWhere((e) => e.eventId == eventId); + final eventIndex = timeline!.events + .where((event) => event.isVisibleInGui) + .toList() + .indexWhere((e) => e.eventId == eventId); if (eventIndex == -1) { setState(() { timeline = null; @@ -921,7 +925,8 @@ class ChatController extends State scrollToEventIdMarker = eventId; }); await scrollController.scrollToIndex( - eventIndex, + eventIndex + 1, + duration: FluffyThemes.animationDuration, preferPosition: AutoScrollPosition.middle, ); _updateScrollController(); From 5f9aa943390c9c587b2e6cf86f5ee56dee91ccff Mon Sep 17 00:00:00 2001 From: Krille Date: Sun, 28 Jul 2024 09:54:07 +0200 Subject: [PATCH 2/3] chore: Follow up highlight event on room open --- lib/pages/chat/chat.dart | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/lib/pages/chat/chat.dart b/lib/pages/chat/chat.dart index ccfb1eb84..129bcb4ef 100644 --- a/lib/pages/chat/chat.dart +++ b/lib/pages/chat/chat.dart @@ -293,7 +293,7 @@ class ChatController extends State if (timeline?.events.any((event) => event.eventId == fullyRead) ?? false) { Logs().v('Scroll up to visible event', fullyRead); - scrollToEventId(fullyRead); + scrollToEventId(fullyRead, highlightEvent: false); return; } if (!mounted) return; @@ -901,7 +901,10 @@ class ChatController extends State inputFocus.requestFocus(); } - void scrollToEventId(String eventId) async { + void scrollToEventId( + String eventId, { + bool highlightEvent = true, + }) async { final eventIndex = timeline!.events .where((event) => event.isVisibleInGui) .toList() @@ -921,9 +924,11 @@ class ChatController extends State }); return; } - setState(() { - scrollToEventIdMarker = eventId; - }); + if (highlightEvent) { + setState(() { + scrollToEventIdMarker = eventId; + }); + } await scrollController.scrollToIndex( eventIndex + 1, duration: FluffyThemes.animationDuration, From 83490de6fd967ba8545d5960c0a6cebd410e0580 Mon Sep 17 00:00:00 2001 From: krille-chan Date: Sun, 28 Jul 2024 14:02:18 +0200 Subject: [PATCH 3/3] fix: Path correct userId to ignore list --- lib/pages/settings_ignore_list/settings_ignore_list.dart | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/pages/settings_ignore_list/settings_ignore_list.dart b/lib/pages/settings_ignore_list/settings_ignore_list.dart index d64be058b..0468d267b 100644 --- a/lib/pages/settings_ignore_list/settings_ignore_list.dart +++ b/lib/pages/settings_ignore_list/settings_ignore_list.dart @@ -22,8 +22,9 @@ class SettingsIgnoreListController extends State { @override void initState() { super.initState(); - if (widget.initialUserId != null) { - controller.text = widget.initialUserId!.replaceAll('@', ''); + final initialUserId = widget.initialUserId; + if (initialUserId != null) { + controller.text = initialUserId; } }