mirror of
https://github.com/omnivore-app/omnivore.git
synced 2026-03-11 08:54:26 +00:00
persist last used filter to user defaults
This commit is contained in:
parent
3410a58a89
commit
f3aac3e30c
4 changed files with 17 additions and 7 deletions
|
|
@ -127,17 +127,21 @@ private let enableGrid = UIDevice.isIPad || FeatureFlag.enableGridCardsOnPhone
|
|||
var body: some View {
|
||||
VStack(spacing: 0) {
|
||||
SearchBar(searchTerm: $viewModel.searchTerm, isSearching: $isSearching)
|
||||
|
||||
|
||||
ZStack(alignment: .bottom) {
|
||||
ScrollView(.horizontal, showsIndicators: false) {
|
||||
HStack {
|
||||
Menu(
|
||||
content: {
|
||||
ForEach(LinkedItemFilter.allCases, id: \.self) { filter in
|
||||
Button(filter.displayName, action: { viewModel.appliedFilter = filter })
|
||||
Button(filter.displayName, action: { viewModel.appliedFilter = filter.rawValue })
|
||||
}
|
||||
},
|
||||
label: { TextChipButton.makeFilterButton(title: viewModel.appliedFilter.displayName) }
|
||||
label: {
|
||||
TextChipButton.makeFilterButton(
|
||||
title: LinkedItemFilter(rawValue: viewModel.appliedFilter)?.displayName ?? "Filter"
|
||||
)
|
||||
}
|
||||
)
|
||||
TextChipButton.makeAddLabelButton {
|
||||
showLabelsSheet = true
|
||||
|
|
|
|||
|
|
@ -18,7 +18,9 @@ import Views
|
|||
@Published var itemToSnoozeID: String?
|
||||
@Published var selectedLinkItem: LinkedItem?
|
||||
@Published var showLoadingBar = false
|
||||
@Published var appliedFilter = LinkedItemFilter.inbox
|
||||
|
||||
@AppStorage(UserDefaultKey.lastSelectedLinkedItemFilter.rawValue)
|
||||
var appliedFilter = LinkedItemFilter.inbox.rawValue
|
||||
|
||||
var cursor: String?
|
||||
|
||||
|
|
@ -89,7 +91,9 @@ import Views
|
|||
await dataService.viewContext.perform {
|
||||
let fetchRequest: NSFetchRequest<Models.LinkedItem> = LinkedItem.fetchRequest()
|
||||
fetchRequest.sortDescriptors = [NSSortDescriptor(keyPath: \LinkedItem.savedAt, ascending: false)]
|
||||
fetchRequest.predicate = self.appliedFilter.predicate
|
||||
if let predicate = LinkedItemFilter(rawValue: self.appliedFilter)?.predicate {
|
||||
fetchRequest.predicate = predicate
|
||||
}
|
||||
// // TODO: Filter on label
|
||||
|
||||
if let fetchedItems = try? dataService.viewContext.fetch(fetchRequest) {
|
||||
|
|
@ -141,7 +145,8 @@ import Views
|
|||
}
|
||||
|
||||
private var searchQuery: String {
|
||||
var query = "\(appliedFilter.queryString)"
|
||||
let filter = LinkedItemFilter(rawValue: appliedFilter) ?? .inbox
|
||||
var query = "\(filter.queryString)"
|
||||
|
||||
if !searchTerm.isEmpty {
|
||||
query.append(" \(searchTerm)")
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import Foundation
|
||||
|
||||
public enum LinkedItemFilter: CaseIterable {
|
||||
public enum LinkedItemFilter: String, CaseIterable {
|
||||
case inbox
|
||||
case all
|
||||
case archived
|
||||
|
|
|
|||
|
|
@ -5,4 +5,5 @@ public enum UserDefaultKey: String {
|
|||
case userHasDeniedPushPrimer
|
||||
case firebasePushToken
|
||||
case homeFeedlayoutPreference
|
||||
case lastSelectedLinkedItemFilter
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue