From a2d4aa0f16afcb9b62407fb22d7c07b57cfeceff Mon Sep 17 00:00:00 2001 From: ggurdin Date: Wed, 18 Jun 2025 15:07:14 -0400 Subject: [PATCH] chore: deselect events in message overlay dispose function --- lib/pages/chat/chat.dart | 7 +++++++ .../toolbar/widgets/message_selection_overlay.dart | 13 ++++++++++++- lib/pangea/toolbar/widgets/overlay_header.dart | 7 ++++--- 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/lib/pages/chat/chat.dart b/lib/pages/chat/chat.dart index b3515294f..6ee5dc1dd 100644 --- a/lib/pages/chat/chat.dart +++ b/lib/pages/chat/chat.dart @@ -1651,6 +1651,13 @@ class ChatController extends State showEmojiPicker = false; }); } + + void setSelectedEvent(Event event) { + setState(() { + selectedEvents.clear(); + selectedEvents.add(event); + }); + } // Pangea# void clearSingleSelectedEvent() { diff --git a/lib/pangea/toolbar/widgets/message_selection_overlay.dart b/lib/pangea/toolbar/widgets/message_selection_overlay.dart index 08a756476..cdacaa4bb 100644 --- a/lib/pangea/toolbar/widgets/message_selection_overlay.dart +++ b/lib/pangea/toolbar/widgets/message_selection_overlay.dart @@ -109,8 +109,19 @@ class MessageOverlayController extends State @override void initState() { - initializeTokensAndMode(); super.initState(); + initializeTokensAndMode(); + WidgetsBinding.instance.addPostFrameCallback( + (_) => widget.chatController.setSelectedEvent(event), + ); + } + + @override + void dispose() { + WidgetsBinding.instance.addPostFrameCallback( + (_) => widget.chatController.clearSelectedEvents(), + ); + super.dispose(); } Future initializeTokensAndMode() async { diff --git a/lib/pangea/toolbar/widgets/overlay_header.dart b/lib/pangea/toolbar/widgets/overlay_header.dart index ff85e6b0b..a13e1c2a4 100644 --- a/lib/pangea/toolbar/widgets/overlay_header.dart +++ b/lib/pangea/toolbar/widgets/overlay_header.dart @@ -36,9 +36,10 @@ class OverlayHeaderState extends State { Widget build(BuildContext context) { final l10n = L10n.of(context); final theme = Theme.of(context); - final pinned = controller.room.pinnedEventIds.contains( - controller.selectedEvents.first.eventId, - ); + final pinned = controller.selectedEvents.length == 1 && + controller.room.pinnedEventIds.contains( + controller.selectedEvents.first.eventId, + ); return Container( padding: const EdgeInsets.symmetric(horizontal: 10), decoration: BoxDecoration(