summaryrefslogtreecommitdiff
path: root/Sora/Data/Settings/SettingsManager.swift
diff options
context:
space:
mode:
authorFuwn <[email protected]>2025-06-20 08:45:15 -0700
committerFuwn <[email protected]>2025-06-20 08:45:15 -0700
commitc55fa0ed54f0a2b0336429e44064855560b928af (patch)
tree9dd53ffb8b28dfbcf91fb86cef0a4b09e5659539 /Sora/Data/Settings/SettingsManager.swift
parentfeat: Development commit (diff)
downloadsora-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.swift41
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