diff --git a/lib/src/client.dart b/lib/src/client.dart index 10a8e91..2a7a285 100644 --- a/lib/src/client.dart +++ b/lib/src/client.dart @@ -1076,10 +1076,12 @@ class Client { /// The compare function how the rooms should be sorted internally. By default /// rooms are sorted by timestamp of the last m.room.message event or the last /// event if there is no known message. - RoomSorter sortRoomsBy = (a, b) => (a.isFavourite != b.isFavourite) - ? (a.isFavourite ? -1 : 1) - : b.timeCreated.millisecondsSinceEpoch - .compareTo(a.timeCreated.millisecondsSinceEpoch); + RoomSorter sortRoomsBy = (a, b) => (a.membership != b.membership) + ? (a.membership == Membership.invite ? -1 : 1) + : (a.isFavourite != b.isFavourite) + ? (a.isFavourite ? -1 : 1) + : b.timeCreated.millisecondsSinceEpoch + .compareTo(a.timeCreated.millisecondsSinceEpoch); void _sortRooms() { if (prevBatch == null || _sortLock || rooms.length < 2) return;