summaryrefslogtreecommitdiff
path: root/Sora/Views/Post/Details
diff options
context:
space:
mode:
Diffstat (limited to 'Sora/Views/Post/Details')
-rw-r--r--Sora/Views/Post/Details/Carousel/PostDetailsCarouselView.swift11
-rw-r--r--Sora/Views/Post/Details/PostDetailsImageView.swift33
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