diff --git a/lib/pages/chat/chat.dart b/lib/pages/chat/chat.dart index fb3f306d..3ae88f64 100644 --- a/lib/pages/chat/chat.dart +++ b/lib/pages/chat/chat.dart @@ -886,18 +886,16 @@ class ChatController extends State { if (room == null) return; final pinnedEventIds = room.pinnedEventIds; final selectedEventIds = selectedEvents.map((e) => e.eventId).toSet(); - final pin = selectedEventIds.any((e) => !pinnedEventIds.contains(e)); + final unpin = selectedEventIds.length == 1 && + pinnedEventIds.contains(selectedEventIds.single); + if (unpin) { + pinnedEventIds.removeWhere(selectedEventIds.contains); + } else { + pinnedEventIds.addAll(selectedEventIds); + } showFutureLoadingDialog( context: context, - future: () => room.setPinnedEvents( - pin - ? { - ...pinnedEventIds, - ...selectedEvents.map((e) => e.eventId), - }.toList() - : pinnedEventIds - ..removeWhere(selectedEventIds.contains), - ), + future: () => room.setPinnedEvents(pinnedEventIds), ); }