Improve code again.

This commit is contained in:
Benoit Marty 2025-11-18 17:40:52 +01:00
parent c1811bb727
commit 8be1faf70f

View file

@ -43,15 +43,18 @@ data class MembersByRole(
) )
constructor(members: List<RoomMember>, comparator: Comparator<RoomMember>) : this( constructor(members: List<RoomMember>, comparator: Comparator<RoomMember>) : this(
owners = members.filter { it.role is RoomMember.Role.Owner }.sorted(comparator), owners = members.filterAndSort(comparator) { it.role is RoomMember.Role.Owner },
admins = members.filter { it.role == RoomMember.Role.Admin }.sorted(comparator), admins = members.filterAndSort(comparator) { it.role == RoomMember.Role.Admin },
moderators = members.filter { it.role == RoomMember.Role.Moderator }.sorted(comparator), moderators = members.filterAndSort(comparator) { it.role == RoomMember.Role.Moderator },
members = members.filter { it.role == RoomMember.Role.User }.sorted(comparator), members = members.filterAndSort(comparator) { it.role == RoomMember.Role.User },
) )
fun isEmpty() = owners.isEmpty() && admins.isEmpty() && moderators.isEmpty() && members.isEmpty() fun isEmpty() = owners.isEmpty() && admins.isEmpty() && moderators.isEmpty() && members.isEmpty()
} }
private fun Iterable<RoomMember>.sorted(comparator: Comparator<RoomMember>): ImmutableList<RoomMember> { private fun Iterable<RoomMember>.filterAndSort(
return sortedWith(comparator).toImmutableList() comparator: Comparator<RoomMember>,
predicate: (RoomMember) -> Boolean,
): ImmutableList<RoomMember> {
return filter(predicate).sortedWith(comparator).toImmutableList()
} }