diff --git a/Flows/HomeFlow/Sources/HomeFlow/FilterView/FilterView.swift b/Flows/HomeFlow/Sources/HomeFlow/FilterView/FilterView.swift index 59a982d..57c2b54 100644 --- a/Flows/HomeFlow/Sources/HomeFlow/FilterView/FilterView.swift +++ b/Flows/HomeFlow/Sources/HomeFlow/FilterView/FilterView.swift @@ -33,8 +33,9 @@ struct FilterView: View { } } ToolbarItem(placement: .navigationBarTrailing) { - Button(action: { isOpened = false }) { - Text("Done") + Button("Done") { + isOpened = false + store.saveStates() } } } diff --git a/Stores/FilterStore/Sources/FilterStore/FilterStore.swift b/Stores/FilterStore/Sources/FilterStore/FilterStore.swift index e775c4e..94372c0 100644 --- a/Stores/FilterStore/Sources/FilterStore/FilterStore.swift +++ b/Stores/FilterStore/Sources/FilterStore/FilterStore.swift @@ -34,7 +34,22 @@ public final class FilterStore: ObservableObject { // MARK: - Initialization and deinitialization - public init() {} + public init() { + fetchStates() + } + + // MARK: - Private methods + + private func fetchStates() { + if let filterData = UserDefaults.standard.value(forKey: "filterState") as? [Int] { + let filterOptions = filterData.compactMap { FilterOption.init(rawValue: $0) } + filterState = Set(filterOptions) + } + if let sortData = UserDefaults.standard.value(forKey: "sortState") as? Int { + guard let sortOption = SortOption.init(rawValue: sortData) else { return } + sortState = sortOption + } + } } // MARK: - Actions @@ -48,6 +63,11 @@ public extension FilterStore { func setSortState(to sortState: SortOption) { self.sortState = sortState } + + func saveStates() { + UserDefaults.standard.set(filterState.map { $0.rawValue }, forKey: "filterState") + UserDefaults.standard.set(sortState.rawValue, forKey: "sortState") + } } // MARK: - Extensions