diff --git a/Sources/InstantSearchCore/FilterState/GroupStorage.swift b/Sources/InstantSearchCore/FilterState/GroupStorage.swift index 33ab5996..be42ef92 100644 --- a/Sources/InstantSearchCore/FilterState/GroupStorage.swift +++ b/Sources/InstantSearchCore/FilterState/GroupStorage.swift @@ -147,7 +147,10 @@ extension GroupsStorage: FiltersWritable { for groupID in groupIDs { switch groupID { case .hierarchical: - filterGroups[groupID] = filterGroups[groupID]?.withFilters([]) + if var cleanHierarchicalGroup = filterGroups[groupID]?.withFilters([]) as? FilterGroup.Hierarchical { + cleanHierarchicalGroup.hierarchicalFilters.removeAll() + filterGroups[groupID] = cleanHierarchicalGroup + } default: filterGroups.removeValue(forKey: groupID) } @@ -182,7 +185,7 @@ extension GroupsStorage: FiltersWritable { } mutating func removeAll() { - filterGroups.removeAll() + removeAll(fromGroupWithIDs: Array(getGroupIDs())) } } diff --git a/Sources/InstantSearchCore/Hierarchical/HierarchicalInteractor+FilterState.swift b/Sources/InstantSearchCore/Hierarchical/HierarchicalInteractor+FilterState.swift index 96e22c2a..7d1dc90e 100644 --- a/Sources/InstantSearchCore/Hierarchical/HierarchicalInteractor+FilterState.swift +++ b/Sources/InstantSearchCore/Hierarchical/HierarchicalInteractor+FilterState.swift @@ -39,8 +39,10 @@ public extension HierarchicalInteractor { } - filterState.onChange.subscribePast(with: interactor) { _, _ in - // TODO + filterState.onChange.subscribePast(with: interactor) { interactor, filterState in + if filterState[hierarchical: groupName].isEmpty { + interactor.selections = [] + } } }