File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -17,6 +17,34 @@ enum BookmarkFilter {
1717 case textSearch( String )
1818}
1919
20+ extension BookmarkFilter {
21+ /// Returns nil for `.textSearch` so transient queries are not persisted.
22+ var persistenceKey : String ? {
23+ switch self {
24+ case . all: return " all "
25+ case . unreadOnly: return " unread "
26+ case . readOnly: return " read "
27+ case . starCategory( let c) : return " star_ \( c. rawValue) "
28+ case . textSearch: return nil
29+ }
30+ }
31+
32+ init ( persistenceKey: String ) {
33+ switch persistenceKey {
34+ case " unread " : self = . unreadOnly
35+ case " read " : self = . readOnly
36+ case let s where s. hasPrefix ( " star_ " ) :
37+ if let raw = Int16 ( s. dropFirst ( " star_ " . count) ) ,
38+ let cat = StarCategory ( rawValue: raw) {
39+ self = . starCategory( cat)
40+ } else {
41+ self = . all
42+ }
43+ default : self = . all
44+ }
45+ }
46+ }
47+
2048private let Log = Logger ( subsystem: Bundle . main. bundleIdentifier!, category: " ThreadListDataSource " )
2149
2250final class ThreadListDataSource : NSObject {
Original file line number Diff line number Diff line change @@ -13,6 +13,10 @@ import UIKit
1313
1414private let logger = Logger ( subsystem: Bundle . main. bundleIdentifier!, category: " BookmarksTableViewController " )
1515
16+ private enum UserDefaultsKey {
17+ static let bookmarksFilter = " BookmarksListFilter "
18+ }
19+
1620private class FilterMenuViewController : UIViewController {
1721 // MARK: - Constants
1822 private enum Layout {
@@ -586,7 +590,12 @@ final class BookmarksTableViewController: TableViewController {
586590 @FoilDefaultStorage ( Settings . showThreadTags) private var showThreadTags
587591 @FoilDefaultStorage ( Settings . bookmarksSortedUnread) private var sortUnreadToTop
588592
589- private var currentFilter : BookmarkFilter = . all
593+ private var currentFilter : BookmarkFilter = {
594+ if let saved = UserDefaults . standard. string ( forKey: UserDefaultsKey . bookmarksFilter) {
595+ return BookmarkFilter ( persistenceKey: saved)
596+ }
597+ return . all
598+ } ( )
590599 private var filterButton : UIBarButtonItem !
591600 private var filterButtonView : UIButton ?
592601 private var searchButton : UIBarButtonItem !
@@ -823,9 +832,12 @@ final class BookmarksTableViewController: TableViewController {
823832
824833 private func applyFilter( _ filter: BookmarkFilter ) {
825834 currentFilter = filter
835+ if let key = filter. persistenceKey {
836+ UserDefaults . standard. set ( key, forKey: UserDefaultsKey . bookmarksFilter)
837+ }
826838 dataSource = makeDataSource ( )
827839 tableView. reloadData ( )
828-
840+
829841 updateButtonColors ( )
830842 }
831843
You can’t perform that action at this time.
0 commit comments