From ffa1c05f14400889905a450477a71443c5fe1741 Mon Sep 17 00:00:00 2001 From: Fuwn Date: Sat, 1 Mar 2025 04:37:10 -0800 Subject: feat: Development commit --- .../Post/Details/PostDetailsCarouselView.swift | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'Sora/Views/Post/Details/PostDetailsCarouselView.swift') diff --git a/Sora/Views/Post/Details/PostDetailsCarouselView.swift b/Sora/Views/Post/Details/PostDetailsCarouselView.swift index 378b9cc..de14477 100644 --- a/Sora/Views/Post/Details/PostDetailsCarouselView.swift +++ b/Sora/Views/Post/Details/PostDetailsCarouselView.swift @@ -7,6 +7,7 @@ struct PostDetailsCarouselView: View { let focusedPost: BooruPost? @Binding var loadingStage: BooruPostLoadingState @State private var currentIndex: Int + private let cacheManager = ImageCacheManager.shared init( posts: [BooruPost], @@ -61,9 +62,29 @@ struct PostDetailsCarouselView: View { } .onChange(of: currentIndex) { if currentIndex == posts.count - 1 { manager.loadNextPage() } + + preloadNearbyImages() } + .onAppear(perform: preloadNearbyImages) #if !os(macOS) .tabViewStyle(PageTabViewStyle(indexDisplayMode: .never)) #endif } + + private func preloadNearbyImages() { + let preloadRange = settings.preloadedCarouselImages + let startIndex = max(0, currentIndex - preloadRange) + let endIndex = min(posts.count - 1, currentIndex + preloadRange) + var urlsToPreload: [URL] = [] + + for index in startIndex...endIndex { + if let url = imageURL(post: posts[index]) { + urlsToPreload.append(url) + } + + urlsToPreload.append(posts[index].previewURL) + } + + cacheManager.preloadImages(urlsToPreload) + } } -- cgit v1.2.3