diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/roomlist/RoomListFilter.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/roomlist/RoomListFilter.kt index e7361b4054..3aac08c823 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/roomlist/RoomListFilter.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/roomlist/RoomListFilter.kt @@ -26,23 +26,24 @@ val RoomListFilter.predicate is RoomListFilter.Any -> { _: RoomSummary -> true } RoomListFilter.None -> { _: RoomSummary -> false } RoomListFilter.Category.Group -> { roomSummary: RoomSummary -> - roomSummary is RoomSummary.Filled && !roomSummary.details.isDirect + roomSummary is RoomSummary.Filled && !roomSummary.details.isDirect && !roomSummary.isInvited() } RoomListFilter.Category.People -> { roomSummary: RoomSummary -> - roomSummary is RoomSummary.Filled && roomSummary.details.isDirect + roomSummary is RoomSummary.Filled && roomSummary.details.isDirect && !roomSummary.isInvited() } RoomListFilter.Favorite -> { roomSummary: RoomSummary -> - roomSummary is RoomSummary.Filled && roomSummary.details.isFavorite + roomSummary is RoomSummary.Filled && roomSummary.details.isFavorite && !roomSummary.isInvited() } RoomListFilter.Unread -> { roomSummary: RoomSummary -> roomSummary is RoomSummary.Filled && + !roomSummary.isInvited() && (roomSummary.details.numUnreadNotifications > 0 || roomSummary.details.isMarkedUnread) } is RoomListFilter.NormalizedMatchRoomName -> { roomSummary: RoomSummary -> roomSummary is RoomSummary.Filled && roomSummary.details.name.contains(pattern, ignoreCase = true) } RoomListFilter.Invite -> { roomSummary: RoomSummary -> - roomSummary is RoomSummary.Filled && roomSummary.details.currentUserMembership == CurrentUserMembership.INVITED + roomSummary.isInvited() } } @@ -59,3 +60,5 @@ fun List.filter(filter: RoomListFilter): List { else -> filter(filter.predicate) } } + +private fun RoomSummary.isInvited() = this is RoomSummary.Filled && this.details.currentUserMembership == CurrentUserMembership.INVITED