From 55a3acdabdc1c2da502cc4e22b112817fe701573 Mon Sep 17 00:00:00 2001 From: ggurdin <46800240+ggurdin@users.noreply.github.com> Date: Fri, 9 Jan 2026 09:59:04 -0500 Subject: [PATCH] chore: update sort order in space participants list (#5144) --- .../pages/room_participants_widget.dart | 47 +++++++------------ 1 file changed, 18 insertions(+), 29 deletions(-) diff --git a/lib/pangea/chat_settings/pages/room_participants_widget.dart b/lib/pangea/chat_settings/pages/room_participants_widget.dart index 2423c6ce7..6c7832869 100644 --- a/lib/pangea/chat_settings/pages/room_participants_widget.dart +++ b/lib/pangea/chat_settings/pages/room_participants_widget.dart @@ -33,41 +33,30 @@ class RoomParticipantsSection extends StatelessWidget { final filteredParticipants = participantsLoader.sortedParticipants; final originalLeaders = filteredParticipants.take(3).toList(); filteredParticipants.sort((a, b) { - // always sort bot to the end + // Always put bot at the very end final aIsBot = a.id == BotName.byEnvironment; final bIsBot = b.id == BotName.byEnvironment; - if (aIsBot && !bIsBot) { - return 1; - } else if (bIsBot && !aIsBot) { - return -1; + if (aIsBot != bIsBot) { + return aIsBot ? 1 : -1; } - // put knocking users at the front - if (a.membership == Membership.knock && - b.membership != Membership.knock) { - return -1; - } else if (b.membership == Membership.knock && - a.membership != Membership.knock) { - return 1; + int rankOf(p) { + // Admins first + if (p.powerLevel == 100) return 0; + + switch (p.membership) { + case Membership.join: + return 1; + case Membership.invite: + return 2; + case Membership.knock: + return 3; + default: + return 4; + } } - // then invited users - if (a.membership == Membership.invite && - b.membership != Membership.invite) { - return -1; - } else if (b.membership == Membership.invite && - a.membership != Membership.invite) { - return 1; - } - - // then admins - if (a.powerLevel == 100 && b.powerLevel != 100) { - return -1; - } else if (b.powerLevel == 100 && a.powerLevel != 100) { - return 1; - } - - return 0; + return rankOf(a).compareTo(rankOf(b)); }); return Wrap(