chore: Follow up fix pinned event ids

This commit is contained in:
Christian Pauly 2022-02-17 14:02:17 +01:00
parent 5bd892668a
commit 5a5efe9de2

View File

@ -886,18 +886,16 @@ class ChatController extends State<Chat> {
if (room == null) return; if (room == null) return;
final pinnedEventIds = room.pinnedEventIds; final pinnedEventIds = room.pinnedEventIds;
final selectedEventIds = selectedEvents.map((e) => e.eventId).toSet(); 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( showFutureLoadingDialog(
context: context, context: context,
future: () => room.setPinnedEvents( future: () => room.setPinnedEvents(pinnedEventIds),
pin
? <String>{
...pinnedEventIds,
...selectedEvents.map((e) => e.eventId),
}.toList()
: pinnedEventIds
..removeWhere(selectedEventIds.contains),
),
); );
} }