summaryrefslogtreecommitdiff
path: root/Sora/Views/Post/Details/PostDetailsImageView.swift
diff options
context:
space:
mode:
authorFuwn <[email protected]>2026-03-22 13:40:57 +0000
committerFuwn <[email protected]>2026-03-22 14:02:13 +0000
commit92a34a801f423e7fafa9432bc2f48080855a5a53 (patch)
tree757f725d3b890fea93f2d3798ce0e9cff6e6c237 /Sora/Views/Post/Details/PostDetailsImageView.swift
parentbuild: wire xcodegen team id through just (diff)
downloadsora-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.swift33
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