From 40fb6c23224c2d9aad265e8f671817028725dcf6 Mon Sep 17 00:00:00 2001 From: Fuwn Date: Sun, 2 Mar 2025 17:18:14 -0800 Subject: feat: Development commit --- .../Post/Details/PostDetailsCarouselView.swift | 95 ---------------------- 1 file changed, 95 deletions(-) delete mode 100644 Sora/Views/Post/Details/PostDetailsCarouselView.swift (limited to 'Sora/Views/Post/Details/PostDetailsCarouselView.swift') diff --git a/Sora/Views/Post/Details/PostDetailsCarouselView.swift b/Sora/Views/Post/Details/PostDetailsCarouselView.swift deleted file mode 100644 index 6b4ba02..0000000 --- a/Sora/Views/Post/Details/PostDetailsCarouselView.swift +++ /dev/null @@ -1,95 +0,0 @@ -import SwiftUI - -struct PostDetailsCarouselView: View { - @EnvironmentObject var manager: BooruManager - @EnvironmentObject var settings: SettingsManager - let posts: [BooruPost] - let focusedPost: BooruPost? - @Binding var loadingStage: BooruPostLoadingState - @State private var currentIndex: Int - private let cacheManager = ImageCacheManager.shared - - init( - posts: [BooruPost], - loadingStage: Binding, - focusedPost: BooruPost? = nil - ) { - self.posts = posts - self.focusedPost = focusedPost - _loadingStage = loadingStage - - if let focused = focusedPost, - let index = posts.firstIndex(where: { $0.id == focused.id }) - { - self._currentIndex = State(initialValue: index) - } else { - self._currentIndex = State(initialValue: 0) - } - } - - func imageURL(post: BooruPost) -> URL? { - switch settings.detailViewQuality { - case .preview: - post.previewURL - - case .sample: - post.sampleURL - - case .original: - post.fileURL - } - } - - var body: some View { - TabView(selection: $currentIndex) { - ForEach(posts.indices, id: \.self) { index in - ZStack { - PostDetailsImageView( - url: posts[index].previewURL, - loadingStage: $loadingStage - ) - - PostDetailsImageView( - url: imageURL(post: posts[index]), - loadingStage: $loadingStage, - finalLoadingState: .loaded, - post: posts[index] - ) - .background( - loadingStage == .loaded ? Color(.systemBackground) : Color.clear - ) - } - .tag(index) - } - } - .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 - - guard preloadRange > 0 else { return } - - 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