From 2d23bd914c22d9aa661f8fb7cd00400cb7698d40 Mon Sep 17 00:00:00 2001 From: avashilling <165050625+avashilling@users.noreply.github.com> Date: Fri, 1 Aug 2025 12:20:45 -0400 Subject: [PATCH 1/3] fix: remove highlight when message is unpinned --- lib/pages/chat/events/message.dart | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/pages/chat/events/message.dart b/lib/pages/chat/events/message.dart index d0b4c025e..5500c7e52 100644 --- a/lib/pages/chat/events/message.dart +++ b/lib/pages/chat/events/message.dart @@ -293,7 +293,10 @@ class Message extends StatelessWidget { borderRadius: BorderRadius.circular( AppConfig.borderRadius / 2, ), - color: selected || highlightMarker + color: selected || + (highlightMarker && + event.room.pinnedEventIds + .contains(event.eventId)) ? theme.colorScheme.secondaryContainer .withAlpha(128) : Colors.transparent, From 3ddc8873357b04c3f8dbe486e5250d03f43fea44 Mon Sep 17 00:00:00 2001 From: avashilling <165050625+avashilling@users.noreply.github.com> Date: Fri, 1 Aug 2025 15:13:00 -0400 Subject: [PATCH 2/3] fix: consistent unpinning and unhighlight on unpin --- lib/pages/chat/chat.dart | 7 ++++++- lib/pages/chat/events/message.dart | 5 +---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/lib/pages/chat/chat.dart b/lib/pages/chat/chat.dart index e0925f9f5..02ccfff3a 100644 --- a/lib/pages/chat/chat.dart +++ b/lib/pages/chat/chat.dart @@ -1184,6 +1184,11 @@ class ChatController extends State if (response == OkCancelResult.ok) { final events = room.pinnedEventIds ..removeWhere((oldEvent) => oldEvent == eventId); + if (scrollToEventIdMarker == eventId) { + setState(() { + scrollToEventIdMarker = null; + }); + } showFutureLoadingDialog( context: context, future: () => room.setPinnedEvents(events), @@ -1197,7 +1202,7 @@ class ChatController extends State final unpin = selectedEventIds.length == 1 && pinnedEventIds.contains(selectedEventIds.single); if (unpin) { - pinnedEventIds.removeWhere(selectedEventIds.contains); + unpinEvent(selectedEventIds.single); } else { pinnedEventIds.addAll(selectedEventIds); } diff --git a/lib/pages/chat/events/message.dart b/lib/pages/chat/events/message.dart index 5500c7e52..d0b4c025e 100644 --- a/lib/pages/chat/events/message.dart +++ b/lib/pages/chat/events/message.dart @@ -293,10 +293,7 @@ class Message extends StatelessWidget { borderRadius: BorderRadius.circular( AppConfig.borderRadius / 2, ), - color: selected || - (highlightMarker && - event.room.pinnedEventIds - .contains(event.eventId)) + color: selected || highlightMarker ? theme.colorScheme.secondaryContainer .withAlpha(128) : Colors.transparent, From 0d7e353fd6d6ebfd3aba3e0782f6aefab10c6743 Mon Sep 17 00:00:00 2001 From: avashilling <165050625+avashilling@users.noreply.github.com> Date: Mon, 11 Aug 2025 11:25:57 -0400 Subject: [PATCH 3/3] fix: return after unpinEvent --- lib/pages/chat/chat.dart | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/pages/chat/chat.dart b/lib/pages/chat/chat.dart index 02ccfff3a..85d28f600 100644 --- a/lib/pages/chat/chat.dart +++ b/lib/pages/chat/chat.dart @@ -1203,6 +1203,7 @@ class ChatController extends State pinnedEventIds.contains(selectedEventIds.single); if (unpin) { unpinEvent(selectedEventIds.single); + return; } else { pinnedEventIds.addAll(selectedEventIds); }