From aa4e116e019bbc9e7db8d33a5a43de51be53dfc4 Mon Sep 17 00:00:00 2001 From: Sergey Ospanov <33452977+sergeyospanov@users.noreply.github.com> Date: Mon, 31 Aug 2026 02:01:51 +0300 Subject: [PATCH] Ignore incompatible room filter activations Signed-off-by: Sergey Ospanov <33452977+sergeyospanov@users.noreply.github.com> --- .../HomeScreen/View/Filters/RoomListFilterModels.swift | 6 ++---- UnitTests/Sources/RoomListFiltersStateTests.swift | 8 ++++++++ 2 files changed, 10 insertions(+), 4 deletions(-) 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)