Ignore incompatible room filter activations

Signed-off-by: Sergey Ospanov <33452977+sergeyospanov@users.noreply.github.com>
This commit is contained in:
Sergey Ospanov
2026-08-31 02:01:51 +03:00
committed by Mauro
parent 9b22ca3cd2
commit aa4e116e01
2 changed files with 10 additions and 4 deletions
@@ -109,10 +109,8 @@ struct RoomListFiltersState {
} }
mutating func activateFilter(_ filter: RoomListFilter) { mutating func activateFilter(_ filter: RoomListFilter) {
filter.incompatibleFilters.forEach { incompatibleFilter in if filter.incompatibleFilters.contains(where: { activeFilters.contains($0) }) {
if activeFilters.contains(incompatibleFilter) { return
fatalError("[RoomListFiltersState] adding mutually exclusive filters is not allowed")
}
} }
// We always want the most recently enabled filter to be at the bottom of the others. // We always want the most recently enabled filter to be at the bottom of the others.
@@ -62,6 +62,14 @@ final class RoomListFiltersStateTests {
#expect(state.availableFilters == [.favourites]) #expect(state.availableFilters == [.favourites])
} }
@Test
func ignoresIncompatibleFilter() {
state.activateFilter(.people)
state.activateFilter(.invites)
#expect(state.activeFilters == [.people])
}
@Test @Test
func clearFilters() { func clearFilters() {
state.activateFilter(.people) state.activateFilter(.people)