diff options
Diffstat (limited to 'Sora/Views/Post/Details')
| -rw-r--r-- | Sora/Views/Post/Details/Carousel/PostDetailsCarouselView.swift | 11 | ||||
| -rw-r--r-- | Sora/Views/Post/Details/PostDetailsImageView.swift | 33 |
2 files changed, 38 insertions, 6 deletions
diff --git a/Sora/Views/Post/Details/Carousel/PostDetailsCarouselView.swift b/Sora/Views/Post/Details/Carousel/PostDetailsCarouselView.swift index f733a89..e43be47 100644 --- a/Sora/Views/Post/Details/Carousel/PostDetailsCarouselView.swift +++ b/Sora/Views/Post/Details/Carousel/PostDetailsCarouselView.swift @@ -14,7 +14,9 @@ struct PostDetailsCarouselView: View { posts: [BooruPost], loadingStage: Binding<BooruPostLoadingState>, focusedPost: BooruPost? = nil, - onFocusedPostChange: @escaping (BooruPost) -> Void = { _ in } + onFocusedPostChange: @escaping (BooruPost) -> Void = { _ in + // Default no-op callback for previews and callers that don't need focus updates. + } ) { self.posts = posts self.focusedPost = focusedPost @@ -101,7 +103,12 @@ struct PostDetailsCarouselView: View { urlsToPreload.append(posts[index].previewURL) } - cacheManager.preloadImages(urlsToPreload) + cacheManager.preloadImages( + urlsToPreload, + domain: manager.domain, + sendUserAgent: settings.sendBooruUserAgent, + customUserAgent: settings.customBooruUserAgent + ) } private func syncCurrentIndexWithFocus() { diff --git a/Sora/Views/Post/Details/PostDetailsImageView.swift b/Sora/Views/Post/Details/PostDetailsImageView.swift index 1e0da72..fd61afd 100644 --- a/Sora/Views/Post/Details/PostDetailsImageView.swift +++ b/Sora/Views/Post/Details/PostDetailsImageView.swift @@ -2,7 +2,7 @@ import NetworkImage import SwiftUI import UserNotifications -struct PostDetailsImageView<Placeholder: View>: View { +struct PostDetailsImageView<Placeholder: View>: View { // swiftlint:disable:this type_body_length @EnvironmentObject var settings: SettingsManager @EnvironmentObject var manager: BooruManager var url: URL? @@ -10,6 +10,13 @@ struct PostDetailsImageView<Placeholder: View>: View { var finalLoadingState: BooruPostLoadingState let placeholder: () -> Placeholder let post: BooruPost? + private var networkImageLoader: BooruNetworkImageLoader { + BooruNetworkImageLoader( + domain: manager.domain, + sendUserAgent: settings.sendBooruUserAgent, + customUserAgent: settings.customBooruUserAgent + ) + } #if os(iOS) var keyWindow: UIWindow? { @@ -53,7 +60,12 @@ struct PostDetailsImageView<Placeholder: View>: View { guard let imageURL = url else { return } Task(priority: .userInitiated) { - guard let imageData = await ImageCacheManager.shared.loadImageData(for: imageURL), + guard let imageData = await ImageCacheManager.shared.loadImageData( + for: imageURL, + domain: manager.domain, + sendUserAgent: settings.sendBooruUserAgent, + customUserAgent: settings.customBooruUserAgent + ), let uiImage = UIImage(data: imageData) else { return } @@ -79,7 +91,12 @@ struct PostDetailsImageView<Placeholder: View>: View { #if os(iOS) Task(priority: .userInitiated) { guard let imageURL = url else { return } - guard let imageData = await ImageCacheManager.shared.loadImageData(for: imageURL), + guard let imageData = await ImageCacheManager.shared.loadImageData( + for: imageURL, + domain: manager.domain, + sendUserAgent: settings.sendBooruUserAgent, + customUserAgent: settings.customBooruUserAgent + ), let uiImage = UIImage(data: imageData) else { return } @@ -125,6 +142,7 @@ struct PostDetailsImageView<Placeholder: View>: View { placeholder() .onAppear { loadingState = .loadingPreview } } + .networkImageLoader(networkImageLoader) #if os(macOS) return content.overlay( @@ -214,8 +232,15 @@ struct PostDetailsImageView<Placeholder: View>: View { let detailViewQuality = settings.detailViewQuality let saveTagsToFile = settings.saveTagsToFile let post = self.post + let request = BooruRequestConfiguration.request( + url: url, + domain: manager.domain, + sendUserAgent: settings.sendBooruUserAgent, + customUserAgent: settings.customBooruUserAgent, + accept: "image/*" + ) - URLSession.shared.dataTask(with: url) { data, _, _ in + URLSession.shared.dataTask(with: request) { data, _, _ in guard let data, let post else { return } let picturesURL = FileManager.default.homeDirectoryForCurrentUser |