Only retrieve active users in RoomMemberListDataSource

This commit is contained in:
Jorge Martín
2024-03-22 10:14:22 +01:00
parent 6fb960291d
commit b933dd929c
2 changed files with 8 additions and 4 deletions

View File

@@ -30,11 +30,13 @@ class RoomMemberListDataSource @Inject constructor(
) {
suspend fun search(query: String): List<RoomMember> = withContext(coroutineDispatchers.io) {
val roomMembersState = room.membersStateFlow.value
val roomMembers = roomMembersState.roomMembers().orEmpty()
val activeRoomMembers = roomMembersState.roomMembers()
?.filter { it.membership.isActive() }
.orEmpty()
val filteredMembers = if (query.isBlank()) {
roomMembers
activeRoomMembers
} else {
roomMembers.filter { member ->
activeRoomMembers.filter { member ->
member.userId.value.contains(query, ignoreCase = true) ||
member.displayName?.contains(query, ignoreCase = true).orFalse()
}

View File

@@ -66,7 +66,9 @@ enum class RoomMembershipState {
INVITE,
JOIN,
KNOCK,
LEAVE
LEAVE;
fun isActive(): Boolean = this == JOIN || this == INVITE
}
/**