Member role: only count and display joined members.

This commit is contained in:
Benoit Marty 2024-04-04 19:17:36 +02:00
parent 04eb59bd07
commit 97491c3f3f
3 changed files with 19 additions and 10 deletions

View file

@ -186,13 +186,12 @@ interface MatrixRoom : Closeable {
fun usersWithRole(role: RoomMember.Role): Flow<ImmutableList<RoomMember>> {
return roomInfoFlow
.map { it.userPowerLevels.filter { (_, powerLevel) -> RoomMember.Role.forPowerLevel(powerLevel) == role } }
.distinctUntilChanged()
.combine(membersStateFlow) { powerLevels, membersState ->
membersState.roomMembers()
.orEmpty()
membersState.joinedRoomMembers()
.filter { powerLevels.containsKey(it.userId) }
.toPersistentList()
}
.distinctUntilChanged()
}
suspend fun updateAvatar(mimeType: String, data: ByteArray): Result<Unit>

View file

@ -35,3 +35,7 @@ fun MatrixRoomMembersState.roomMembers(): List<RoomMember>? {
else -> null
}
}
fun MatrixRoomMembersState.joinedRoomMembers(): List<RoomMember> {
return roomMembers().orEmpty().filter { it.membership == RoomMembershipState.JOIN }
}