From aeab3d54345c76d918ff2e80775af3412bb3489b Mon Sep 17 00:00:00 2001 From: Fuwn Date: Wed, 1 Apr 2026 14:07:25 +0000 Subject: Use stable booru cache keys --- Sora/Data/Booru/BooruManager.swift | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) (limited to 'Sora/Data/Booru') 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: -- cgit v1.2.3