diff --git a/lib/pages/chat/chat.dart b/lib/pages/chat/chat.dart index 4a8083a1..941fd764 100644 --- a/lib/pages/chat/chat.dart +++ b/lib/pages/chat/chat.dart @@ -883,13 +883,21 @@ class ChatController extends State { } void pinEvent() { + final room = this.room; + if (room == null) return; + final pinnedEventIds = room.pinnedEventIds; + final selectedEventIds = selectedEvents.map((e) => e.eventId).toSet(); + final pin = selectedEventIds.any((e) => !pinnedEventIds.contains(e)); showFutureLoadingDialog( context: context, - future: () => room!.setPinnedEvents( - { - ...room!.pinnedEventIds, - ...selectedEvents.map((e) => e.eventId), - }.toList(), + future: () => room.setPinnedEvents( + pin + ? { + ...pinnedEventIds, + ...selectedEvents.map((e) => e.eventId), + }.toList() + : pinnedEventIds + ..removeWhere(selectedEventIds.contains), ), ); }