diff options
| author | Fuwn <[email protected]> | 2026-02-23 22:02:59 -0800 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2026-02-23 22:02:59 -0800 |
| commit | 7904b2366a28fca2585b5f5ec0588412e10f0c94 (patch) | |
| tree | e57236200c0f377d0d06f1c90231551f7be3dbed /Sora/Data/Booru/BooruManager.swift | |
| parent | feat: localize accessibility fallback and value strings (diff) | |
| download | sora-testing-main.tar.xz sora-testing-main.zip | |
Diffstat (limited to 'Sora/Data/Booru/BooruManager.swift')
| -rw-r--r-- | Sora/Data/Booru/BooruManager.swift | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/Sora/Data/Booru/BooruManager.swift b/Sora/Data/Booru/BooruManager.swift index 3c4374e..2957fcd 100644 --- a/Sora/Data/Booru/BooruManager.swift +++ b/Sora/Data/Booru/BooruManager.swift @@ -30,6 +30,7 @@ class BooruManager: ObservableObject { // swiftlint:disable:this type_body_leng private let showHeldMoebooruPosts: Bool private var urlCache: [String: URL] = [:] private var lastPostCount = 0 + private var cachedMinimumPostID: Int? // MARK: - Computed Properties var tags: [String] { @@ -340,9 +341,7 @@ class BooruManager: ObservableObject { // swiftlint:disable:this type_body_leng guard page > 1 else { return "1" } guard !hasExplicitSortTag(in: tags) else { return String(page) } - guard let minimumPostID = posts.lazy.compactMap({ Int($0.id) }).min() else { - return String(page) - } + guard let minimumPostID = cachedMinimumPostID else { return String(page) } return "b\(minimumPostID)" } @@ -545,12 +544,17 @@ class BooruManager: ObservableObject { // swiftlint:disable:this type_body_leng postIndexMap.removeAll() lastPostCount = 0 + cachedMinimumPostID = nil } endOfData = newPosts.isEmpty guard !endOfData else { return } + if let nextMinimumPostID = newPosts.lazy.compactMap({ Int($0.id) }).min() { + cachedMinimumPostID = min(cachedMinimumPostID ?? nextMinimumPostID, nextMinimumPostID) + } + withTransaction(Transaction(animation: nil)) { let oldCount = self.posts.count |