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 } /**