diff --git a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRolesState.kt b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRolesState.kt index 6bcc13fb9a..57c0f76f7b 100644 --- a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRolesState.kt +++ b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/roles/ChangeRolesState.kt @@ -43,15 +43,18 @@ data class MembersByRole( ) constructor(members: List, comparator: Comparator) : this( - owners = members.filter { it.role is RoomMember.Role.Owner }.sorted(comparator), - admins = members.filter { it.role == RoomMember.Role.Admin }.sorted(comparator), - moderators = members.filter { it.role == RoomMember.Role.Moderator }.sorted(comparator), - members = members.filter { it.role == RoomMember.Role.User }.sorted(comparator), + owners = members.filterAndSort(comparator) { it.role is RoomMember.Role.Owner }, + admins = members.filterAndSort(comparator) { it.role == RoomMember.Role.Admin }, + moderators = members.filterAndSort(comparator) { it.role == RoomMember.Role.Moderator }, + members = members.filterAndSort(comparator) { it.role == RoomMember.Role.User }, ) fun isEmpty() = owners.isEmpty() && admins.isEmpty() && moderators.isEmpty() && members.isEmpty() } -private fun Iterable.sorted(comparator: Comparator): ImmutableList { - return sortedWith(comparator).toImmutableList() +private fun Iterable.filterAndSort( + comparator: Comparator, + predicate: (RoomMember) -> Boolean, +): ImmutableList { + return filter(predicate).sortedWith(comparator).toImmutableList() }