diff options
Diffstat (limited to 'Sora')
| -rw-r--r-- | Sora/Data/Settings/SettingsManager.swift | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/Sora/Data/Settings/SettingsManager.swift b/Sora/Data/Settings/SettingsManager.swift index ff284f3..fbd432e 100644 --- a/Sora/Data/Settings/SettingsManager.swift +++ b/Sora/Data/Settings/SettingsManager.swift @@ -44,6 +44,7 @@ class SettingsManager: ObservableObject { // swiftlint:disable:this type_body_l // MARK: - Private Properties private var bookmarksCache: [SettingsBookmark] = [] private var searchHistoryCache: [BooruSearchQuery] = [] + private var displayRatingsCache: [BooruRating] = [] // MARK: - Codable Properties @AppStorage("bookmarks") @@ -134,11 +135,13 @@ class SettingsManager: ObservableObject { // swiftlint:disable:this type_body_l } var displayRatings: [BooruRating] { - get { - Self.decode([BooruRating].self, from: displayRatingsData) ?? BooruRating.allCases - } + get { displayRatingsCache } - set { displayRatingsData = Self.encode(newValue) ?? displayRatingsData } + set { + displayRatingsData = Self.encode(newValue) ?? displayRatingsData + + loadDisplayRatingsCache() + } } var blurRatings: [BooruRating] { @@ -282,8 +285,10 @@ class SettingsManager: ObservableObject { // swiftlint:disable:this type_body_l ) { [weak self] _ in self?.syncFromCloud() } + loadBookmarksCache() loadSearchHistoryCache() + loadDisplayRatingsCache() } // MARK: - Private Helpers @@ -380,6 +385,14 @@ class SettingsManager: ObservableObject { // swiftlint:disable:this type_body_l ) } + private func loadDisplayRatingsCache() { + loadCache( + from: displayRatingsData, + sort: { $0 }, + assign: { [weak self] in self?.displayRatingsCache = $0 } + ) + } + // MARK: - Public Methods func appendToSearchHistory(_ query: BooruSearchQuery) { self.searchHistory.append(query) |