summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFuwn <[email protected]>2025-07-24 18:57:23 +0200
committerFuwn <[email protected]>2025-07-24 18:57:23 +0200
commitc53127e93ea552aa2de99c522389c6e7836a7094 (patch)
tree3aeadb25546efcfc9001fcc0dbc0ac21072b3b96
parentfeat: Development commit (diff)
downloadsora-testing-c53127e93ea552aa2de99c522389c6e7836a7094.tar.xz
sora-testing-c53127e93ea552aa2de99c522389c6e7836a7094.zip
feat: Development commit
-rw-r--r--Sora/Data/Booru/BooruManager.swift11
-rw-r--r--Sora/Data/Settings/SettingsManager.swift26
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