diff options
| author | Fuwn <[email protected]> | 2025-07-24 18:57:23 +0200 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2025-07-24 18:57:23 +0200 |
| commit | c53127e93ea552aa2de99c522389c6e7836a7094 (patch) | |
| tree | 3aeadb25546efcfc9001fcc0dbc0ac21072b3b96 | |
| parent | feat: Development commit (diff) | |
| download | sora-testing-c53127e93ea552aa2de99c522389c6e7836a7094.tar.xz sora-testing-c53127e93ea552aa2de99c522389c6e7836a7094.zip | |
feat: Development commit
| -rw-r--r-- | Sora/Data/Booru/BooruManager.swift | 11 | ||||
| -rw-r--r-- | Sora/Data/Settings/SettingsManager.swift | 26 |
2 files changed, 22 insertions, 15 deletions
diff --git a/Sora/Data/Booru/BooruManager.swift b/Sora/Data/Booru/BooruManager.swift index 8f6fbd7..5530d7c 100644 --- a/Sora/Data/Booru/BooruManager.swift +++ b/Sora/Data/Booru/BooruManager.swift @@ -22,7 +22,7 @@ class BooruManager: ObservableObject { // swiftlint:disable:this type_body_leng // MARK: - Private Properties private var currentTask: Task<Void, Never>? private let pageCache = NSCache<NSString, BooruPageCacheEntry>() // swiftlint:disable:this legacy_objc_type - private let cacheDuration: TimeInterval = 300 + private let cacheDuration: TimeInterval private let credentials: BooruProviderCredentials? private let userAgent: String @@ -38,11 +38,16 @@ class BooruManager: ObservableObject { // swiftlint:disable:this type_body_leng var canGoForwardInHistory: Bool { historyIndex < searchHistory.count - 1 } // MARK: - Initialisation - init(_ provider: BooruProvider, credentials: BooruProviderCredentials? = nil) { + init( + _ provider: BooruProvider, + credentials: BooruProviderCredentials? = nil, + cacheDuration: TimeInterval = 300 + ) { self.provider = provider self.flavor = BooruProviderFlavor(provider: provider) self.domain = provider.domain self.credentials = credentials + self.cacheDuration = cacheDuration pageCache.countLimit = 50 pageCache.totalCostLimit = 50 * 1_024 * 1_024 @@ -132,7 +137,7 @@ class BooruManager: ObservableObject { // swiftlint:disable:this type_body_leng expiration: cacheDuration ) - pageCache.setObject(cacheEntry, forKey: cacheKey) + pageCache.setObject(cacheEntry, forKey: cacheKey, cost: finalPosts.count) withAnimation(nil) { updatePosts(finalPosts, replace: replace) diff --git a/Sora/Data/Settings/SettingsManager.swift b/Sora/Data/Settings/SettingsManager.swift index 8f18ef6..44b3526 100644 --- a/Sora/Data/Settings/SettingsManager.swift +++ b/Sora/Data/Settings/SettingsManager.swift @@ -468,9 +468,11 @@ class SettingsManager: ObservableObject { // swiftlint:disable:this type_body_l let mergedBookmarks = Array(Set(localBookmarks + iCloudBookmarks)) .sorted { $0.date > $1.date } - NSUbiquitousKeyValueStore.default.set(Self.encode(mergedBookmarks), forKey: "bookmarks") + if let encoded = Self.encode(mergedBookmarks) { + NSUbiquitousKeyValueStore.default.set(encoded, forKey: "bookmarks") - bookmarksData = Self.encode(mergedBookmarks) ?? Data() + bookmarksData = encoded + } // Merge search history var iCloudHistory: [BooruSearchQuery] = [] @@ -483,9 +485,11 @@ class SettingsManager: ObservableObject { // swiftlint:disable:this type_body_l let mergedHistory = Array(Set(localHistory + iCloudHistory)) .sorted { $0.date > $1.date } - NSUbiquitousKeyValueStore.default.set(Self.encode(mergedHistory), forKey: "searchHistory") + if let encoded = Self.encode(mergedHistory) { + NSUbiquitousKeyValueStore.default.set(encoded, forKey: "searchHistory") - searchHistoryData = Self.encode(mergedHistory) ?? Data() + searchHistoryData = encoded + } // Merge custom providers var iCloudProviders: [BooruProviderCustom] = [] @@ -497,9 +501,11 @@ class SettingsManager: ObservableObject { // swiftlint:disable:this type_body_l let localProviders = Self.decode([BooruProviderCustom].self, from: customProvidersData) ?? [] let mergedProviders = Array(Set(localProviders + iCloudProviders)) - NSUbiquitousKeyValueStore.default.set(Self.encode(mergedProviders), forKey: "customProviders") + if let encoded = Self.encode(mergedProviders) { + NSUbiquitousKeyValueStore.default.set(encoded, forKey: "customProviders") - customProvidersData = Self.encode(mergedProviders) ?? Data() + customProvidersData = encoded + } loadBookmarksCache() loadSearchHistoryCache() @@ -556,9 +562,7 @@ class SettingsManager: ObservableObject { // swiftlint:disable:this type_body_l } func updateBookmarkLastVisit(withID id: UUID, date: Date = Date()) { - guard let index = bookmarks.firstIndex(of: bookmarks.first(where: { $0.id == id })!) else { - return - } + guard let index = bookmarks.firstIndex(where: { $0.id == id }) else { return } bookmarks[index].lastVisit = date @@ -568,9 +572,7 @@ class SettingsManager: ObservableObject { // swiftlint:disable:this type_body_l } func incrementBookmarkVisitCount(withID id: UUID) { - guard let index = bookmarks.firstIndex(of: bookmarks.first(where: { $0.id == id })!) else { - return - } + guard let index = bookmarks.firstIndex(where: { $0.id == id }) else { return } bookmarks[index].visitedCount += 1 |