diff options
| author | Fuwn <[email protected]> | 2025-06-20 08:45:15 -0700 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2025-06-20 08:45:15 -0700 |
| commit | c55fa0ed54f0a2b0336429e44064855560b928af (patch) | |
| tree | 9dd53ffb8b28dfbcf91fb86cef0a4b09e5659539 /Sora/Data/Settings/SettingsManager.swift | |
| parent | feat: Development commit (diff) | |
| download | sora-testing-c55fa0ed54f0a2b0336429e44064855560b928af.tar.xz sora-testing-c55fa0ed54f0a2b0336429e44064855560b928af.zip | |
feat: Development commit
Diffstat (limited to 'Sora/Data/Settings/SettingsManager.swift')
| -rw-r--r-- | Sora/Data/Settings/SettingsManager.swift | 41 |
1 files 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<T: Decodable>( + 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 |