From 4cb14475d085b26d6a98460283013ee0803946da Mon Sep 17 00:00:00 2001 From: Jackson Harper Date: Tue, 13 Jun 2023 20:05:51 +0800 Subject: [PATCH] Remember feature filter, dont display features during search --- .../App/Views/Home/HomeFeedViewIOS.swift | 6 ++--- .../App/Views/Home/HomeFeedViewModel.swift | 25 +++++++++++-------- .../Sources/Utils/UserDefaultKeys.swift | 1 + 3 files changed, 18 insertions(+), 14 deletions(-) diff --git a/apple/OmnivoreKit/Sources/App/Views/Home/HomeFeedViewIOS.swift b/apple/OmnivoreKit/Sources/App/Views/Home/HomeFeedViewIOS.swift index 585e50d96..938615d79 100644 --- a/apple/OmnivoreKit/Sources/App/Views/Home/HomeFeedViewIOS.swift +++ b/apple/OmnivoreKit/Sources/App/Views/Home/HomeFeedViewIOS.swift @@ -398,7 +398,7 @@ struct AnimatingCellHeight: AnimatableModifier { }) }, label: { HStack(alignment: .center) { - Text(viewModel.featureFilter.title.uppercased()) + Text((FeaturedItemFilter(rawValue: viewModel.featureFilter) ?? .continueReading).title.uppercased()) .font(Font.system(size: 14, weight: .regular)) Image(systemName: "chevron.down") }.frame(maxWidth: .infinity, alignment: .leading) @@ -420,7 +420,7 @@ struct AnimatingCellHeight: AnimatableModifier { } } } else { - Text(viewModel.featureFilter.emptyMessage) + Text((FeaturedItemFilter(rawValue: viewModel.featureFilter) ?? .continueReading).emptyMessage) .font(Font.system(size: 14, weight: .regular)) .foregroundColor(Color(hex: "#898989")) .frame(maxWidth: geo.size.width) @@ -456,7 +456,7 @@ struct AnimatingCellHeight: AnimatableModifier { .listRowInsets(.init(top: 0, leading: 10, bottom: 10, trailing: 10)) // Only show the feature card section if we have items loaded - if !viewModel.hideFeatureSection, viewModel.items.count > 0 { + if !viewModel.hideFeatureSection, viewModel.items.count > 0, viewModel.searchTerm.isEmpty { featureCard .listRowInsets(.init(top: 0, leading: 10, bottom: 10, trailing: 10)) .modifier(AnimatingCellHeight(height: viewModel.featureItems.count > 0 ? 260 : 130)) diff --git a/apple/OmnivoreKit/Sources/App/Views/Home/HomeFeedViewModel.swift b/apple/OmnivoreKit/Sources/App/Views/Home/HomeFeedViewModel.swift index 1cce837f2..199308ff9 100644 --- a/apple/OmnivoreKit/Sources/App/Views/Home/HomeFeedViewModel.swift +++ b/apple/OmnivoreKit/Sources/App/Views/Home/HomeFeedViewModel.swift @@ -32,8 +32,6 @@ import Views @Published var showLabelsSheet = false @Published var showCommunityModal = false - - @Published var featureFilter = FeaturedItemFilter.continueReading @Published var featureItems = [LinkedItem]() var cursor: String? @@ -47,20 +45,25 @@ import Views @AppStorage(UserDefaultKey.hideFeatureSection.rawValue) var hideFeatureSection = false @AppStorage(UserDefaultKey.lastSelectedLinkedItemFilter.rawValue) var appliedFilter = LinkedItemFilter.inbox.rawValue + @AppStorage(UserDefaultKey.lastSelectedFeaturedItemFilter.rawValue) var featureFilter = FeaturedItemFilter.continueReading.rawValue func setItems(_ items: [LinkedItem]) { self.items = items - updateFeatureFilter(featureFilter) + updateFeatureFilter(FeaturedItemFilter(rawValue: featureFilter)) } - func updateFeatureFilter(_ filter: FeaturedItemFilter) { - // now try to update the continue reading items: - featureItems = (items.filter { item in - filter.predicate.evaluate(with: item) - } as NSArray) - .sortedArray(using: [filter.sortDescriptor]) - .compactMap { $0 as? LinkedItem } - featureFilter = filter + func updateFeatureFilter(_ filter: FeaturedItemFilter?) { + if let filter = filter { + // now try to update the continue reading items: + featureItems = (items.filter { item in + filter.predicate.evaluate(with: item) + } as NSArray) + .sortedArray(using: [filter.sortDescriptor]) + .compactMap { $0 as? LinkedItem } + featureFilter = filter.rawValue + } else { + featureItems = [] + } } func handleReaderItemNotification(objectID: NSManagedObjectID, dataService: DataService) { diff --git a/apple/OmnivoreKit/Sources/Utils/UserDefaultKeys.swift b/apple/OmnivoreKit/Sources/Utils/UserDefaultKeys.swift index 9487713c6..9eceb0453 100644 --- a/apple/OmnivoreKit/Sources/Utils/UserDefaultKeys.swift +++ b/apple/OmnivoreKit/Sources/Utils/UserDefaultKeys.swift @@ -12,6 +12,7 @@ public enum UserDefaultKey: String { case firebasePushToken case homeFeedlayoutPreference case lastSelectedLinkedItemFilter + case lastSelectedFeaturedItemFilter case lastUsedAppVersion case lastUsedAppBuildNumber case lastItemSyncTime