diff --git a/ElementX/Sources/Screens/HomeScreen/View/Filters/RoomListFilterModels.swift b/ElementX/Sources/Screens/HomeScreen/View/Filters/RoomListFilterModels.swift index fcd4db338..4f44b5ca9 100644 --- a/ElementX/Sources/Screens/HomeScreen/View/Filters/RoomListFilterModels.swift +++ b/ElementX/Sources/Screens/HomeScreen/View/Filters/RoomListFilterModels.swift @@ -109,10 +109,8 @@ struct RoomListFiltersState { } mutating func activateFilter(_ filter: RoomListFilter) { - filter.incompatibleFilters.forEach { incompatibleFilter in - if activeFilters.contains(incompatibleFilter) { - fatalError("[RoomListFiltersState] adding mutually exclusive filters is not allowed") - } + if filter.incompatibleFilters.contains(where: { activeFilters.contains($0) }) { + return } // We always want the most recently enabled filter to be at the bottom of the others. diff --git a/UnitTests/Sources/RoomListFiltersStateTests.swift b/UnitTests/Sources/RoomListFiltersStateTests.swift index 4f733503d..9aea35b46 100644 --- a/UnitTests/Sources/RoomListFiltersStateTests.swift +++ b/UnitTests/Sources/RoomListFiltersStateTests.swift @@ -62,6 +62,14 @@ final class RoomListFiltersStateTests { #expect(state.availableFilters == [.favourites]) } + @Test + func ignoresIncompatibleFilter() { + state.activateFilter(.people) + state.activateFilter(.invites) + + #expect(state.activeFilters == [.people]) + } + @Test func clearFilters() { state.activateFilter(.people)