diff options
| author | Fuwn <[email protected]> | 2026-04-01 14:07:25 +0000 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2026-04-01 14:07:25 +0000 |
| commit | aeab3d54345c76d918ff2e80775af3412bb3489b (patch) | |
| tree | a48fff733941125cfdc89637a530790b2d88a2d8 | |
| parent | Migrate settings manager to Swift Observation (diff) | |
| download | sora-testing-aeab3d54345c76d918ff2e80775af3412bb3489b.tar.xz sora-testing-aeab3d54345c76d918ff2e80775af3412bb3489b.zip | |
| -rw-r--r-- | Sora/Data/Booru/BooruManager.swift | 18 |
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: |