summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFuwn <[email protected]>2026-04-01 14:07:25 +0000
committerFuwn <[email protected]>2026-04-01 14:07:25 +0000
commitaeab3d54345c76d918ff2e80775af3412bb3489b (patch)
treea48fff733941125cfdc89637a530790b2d88a2d8
parentMigrate settings manager to Swift Observation (diff)
downloadsora-testing-aeab3d54345c76d918ff2e80775af3412bb3489b.tar.xz
sora-testing-aeab3d54345c76d918ff2e80775af3412bb3489b.zip
Use stable booru cache keysHEADmain
-rw-r--r--Sora/Data/Booru/BooruManager.swift18
1 files changed, 16 insertions, 2 deletions
diff --git a/Sora/Data/Booru/BooruManager.swift b/Sora/Data/Booru/BooruManager.swift
index 0909885..b70ad5b 100644
--- a/Sora/Data/Booru/BooruManager.swift
+++ b/Sora/Data/Booru/BooruManager.swift
@@ -85,7 +85,7 @@ class BooruManager: ObservableObject { // swiftlint:disable:this type_body_leng
let pageValue = flavor == .gelbooru ? page - 1 : page
guard let url = url(forPosts: pageValue, limit: limit, tags: tags) else { return }
- let cacheKey = "\(url.absoluteString.hashValue)_\(replace)" as NSString // swiftlint:disable:this legacy_objc_type
+ let cacheKey = pageCacheKey(for: url, replace: replace)
if let cachedEntry = pageCache.object(forKey: cacheKey),
!cachedEntry.isExpired
@@ -363,7 +363,11 @@ class BooruManager: ObservableObject { // swiftlint:disable:this type_body_leng
let tagString = tags.joined(separator: "+")
let pageCacheValue =
flavor == .danbooru ? danbooruPageToken(for: page, tags: tags) : String(page)
- let cacheKey = "posts_\(pageCacheValue)_\(limit)_\(tagString.hashValue)"
+ let cacheKey = postsURLCacheKey(
+ page: pageCacheValue,
+ limit: limit,
+ tagString: tagString
+ )
if let cachedURL = urlCache[cacheKey] {
return cachedURL
@@ -446,6 +450,16 @@ class BooruManager: ObservableObject { // swiftlint:disable:this type_body_leng
return url
}
+ // swiftlint:disable:next legacy_objc_type
+ private func pageCacheKey(for url: URL, replace: Bool) -> NSString {
+ // swiftlint:disable:next legacy_objc_type
+ "posts|\(url.absoluteString)|replace:\(replace)" as NSString
+ }
+
+ private func postsURLCacheKey(page: String, limit: Int, tagString: String) -> String {
+ "posts|\(page)|limit:\(limit)|tags:\(tagString)"
+ }
+
private func url(forTags limit: Int, order: String = "count") -> URL? {
switch flavor {
case .moebooru: