From b933dd929c680d1a1e38802003b5ef6570487c87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jorge=20Mart=C3=ADn?= Date: Fri, 22 Mar 2024 10:14:22 +0100 Subject: [PATCH] Only retrieve active users in `RoomMemberListDataSource` --- .../roomdetails/impl/members/RoomMemberListDataSource.kt | 8 +++++--- .../android/libraries/matrix/api/room/RoomMember.kt | 4 +++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/RoomMemberListDataSource.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/RoomMemberListDataSource.kt index faf1f9fc78..e475497865 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/RoomMemberListDataSource.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/RoomMemberListDataSource.kt @@ -30,11 +30,13 @@ class RoomMemberListDataSource @Inject constructor( ) { suspend fun search(query: String): List = 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() } diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/RoomMember.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/RoomMember.kt index 60f4102234..f6609a2bce 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/RoomMember.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/RoomMember.kt @@ -66,7 +66,9 @@ enum class RoomMembershipState { INVITE, JOIN, KNOCK, - LEAVE + LEAVE; + + fun isActive(): Boolean = this == JOIN || this == INVITE } /**