From c55fa0ed54f0a2b0336429e44064855560b928af Mon Sep 17 00:00:00 2001 From: Fuwn Date: Fri, 20 Jun 2025 08:45:15 -0700 Subject: feat: Development commit --- Sora/Data/Settings/SettingsManager.swift | 41 +++++++++++++++++--------------- 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/Sora/Data/Settings/SettingsManager.swift b/Sora/Data/Settings/SettingsManager.swift index 21317bb..432d6f4 100644 --- a/Sora/Data/Settings/SettingsManager.swift +++ b/Sora/Data/Settings/SettingsManager.swift @@ -303,30 +303,33 @@ class SettingsManager: ObservableObject { // swiftlint:disable:this type_body_l } // MARK: Cache Loaders - private func loadBookmarksCache() { - let data = bookmarksData - - DispatchQueue.global(qos: .userInitiated).async { [weak self] in - let decoded = Self.decode([SettingsBookmark].self, from: data) ?? [] - let sorted = decoded.sorted { $0.date > $1.date } + private func loadCache( + from data: Data, + sort: @escaping ([T]) -> [T], + assign: @escaping ([T]) -> Void + ) { + DispatchQueue.global(qos: .userInitiated).async { + let decoded = Self.decode([T].self, from: data) ?? [] + let sorted = sort(decoded) - DispatchQueue.main.async { - self?.bookmarksCache = sorted - } + DispatchQueue.main.async { assign(sorted) } } } - private func loadSearchHistoryCache() { - let data = searchHistoryData - - DispatchQueue.global(qos: .userInitiated).async { [weak self] in - let decoded = Self.decode([BooruSearchQuery].self, from: data) ?? [] - let sorted = decoded.sorted { $0.date > $1.date } + private func loadBookmarksCache() { + loadCache( + from: bookmarksData, + sort: { $0.sorted { $0.date > $1.date } }, + assign: { [weak self] in self?.bookmarksCache = $0 } + ) + } - DispatchQueue.main.async { - self?.searchHistoryCache = sorted - } - } + private func loadSearchHistoryCache() { + loadCache( + from: searchHistoryData, + sort: { $0.sorted { $0.date > $1.date } }, + assign: { [weak self] in self?.searchHistoryCache = $0 } + ) } // MARK: - Public Methods -- cgit v1.2.3