diff options
| author | Fuwn <[email protected]> | 2026-03-22 13:40:57 +0000 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2026-03-22 14:02:13 +0000 |
| commit | 92a34a801f423e7fafa9432bc2f48080855a5a53 (patch) | |
| tree | 757f725d3b890fea93f2d3798ce0e9cff6e6c237 /Sora/Views/Post/Details/PostDetailsImageView.swift | |
| parent | build: wire xcodegen team id through just (diff) | |
| download | sora-testing-92a34a801f423e7fafa9432bc2f48080855a5a53.tar.xz sora-testing-92a34a801f423e7fafa9432bc2f48080855a5a53.zip | |
fix: send booru headers for image requests
Diffstat (limited to 'Sora/Views/Post/Details/PostDetailsImageView.swift')
| -rw-r--r-- | Sora/Views/Post/Details/PostDetailsImageView.swift | 33 |
1 files changed, 29 insertions, 4 deletions
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 |