RoomList : make invite filter truly exclusive

This commit is contained in:
ganfra 2024-04-16 11:53:40 +02:00
parent 807bd362fe
commit 0e65ea8eb8

View file

@ -26,23 +26,24 @@ val RoomListFilter.predicate
is RoomListFilter.Any -> { _: RoomSummary -> true } is RoomListFilter.Any -> { _: RoomSummary -> true }
RoomListFilter.None -> { _: RoomSummary -> false } RoomListFilter.None -> { _: RoomSummary -> false }
RoomListFilter.Category.Group -> { roomSummary: RoomSummary -> 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 -> 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 -> RoomListFilter.Favorite -> { roomSummary: RoomSummary ->
roomSummary is RoomSummary.Filled && roomSummary.details.isFavorite roomSummary is RoomSummary.Filled && roomSummary.details.isFavorite && !roomSummary.isInvited()
} }
RoomListFilter.Unread -> { roomSummary: RoomSummary -> RoomListFilter.Unread -> { roomSummary: RoomSummary ->
roomSummary is RoomSummary.Filled && roomSummary is RoomSummary.Filled &&
!roomSummary.isInvited() &&
(roomSummary.details.numUnreadNotifications > 0 || roomSummary.details.isMarkedUnread) (roomSummary.details.numUnreadNotifications > 0 || roomSummary.details.isMarkedUnread)
} }
is RoomListFilter.NormalizedMatchRoomName -> { roomSummary: RoomSummary -> is RoomListFilter.NormalizedMatchRoomName -> { roomSummary: RoomSummary ->
roomSummary is RoomSummary.Filled && roomSummary.details.name.contains(pattern, ignoreCase = true) roomSummary is RoomSummary.Filled && roomSummary.details.name.contains(pattern, ignoreCase = true)
} }
RoomListFilter.Invite -> { roomSummary: RoomSummary -> RoomListFilter.Invite -> { roomSummary: RoomSummary ->
roomSummary is RoomSummary.Filled && roomSummary.details.currentUserMembership == CurrentUserMembership.INVITED roomSummary.isInvited()
} }
} }
@ -59,3 +60,5 @@ fun List<RoomSummary>.filter(filter: RoomListFilter): List<RoomSummary> {
else -> filter(filter.predicate) else -> filter(filter.predicate)
} }
} }
private fun RoomSummary.isInvited() = this is RoomSummary.Filled && this.details.currentUserMembership == CurrentUserMembership.INVITED