summaryrefslogtreecommitdiff
path: root/Sora/Views/Post/Details/PostDetailsImageView.swift
diff options
context:
space:
mode:
Diffstat (limited to 'Sora/Views/Post/Details/PostDetailsImageView.swift')
-rw-r--r--Sora/Views/Post/Details/PostDetailsImageView.swift25
1 files changed, 15 insertions, 10 deletions
diff --git a/Sora/Views/Post/Details/PostDetailsImageView.swift b/Sora/Views/Post/Details/PostDetailsImageView.swift
index f9e49db..c33f7db 100644
--- a/Sora/Views/Post/Details/PostDetailsImageView.swift
+++ b/Sora/Views/Post/Details/PostDetailsImageView.swift
@@ -51,14 +51,17 @@ struct PostDetailsImageView<Placeholder: View>: View {
#if os(iOS)
Button {
- guard let url else { return }
+ guard let imageURL = url else { return }
- URLSession.shared.dataTask(with: url) { data, _, _ in
- guard let data, let uiImage = UIImage(data: data) else { return }
+ Task(priority: .userInitiated) {
+ guard let imageData = await ImageCacheManager.shared.loadImageData(for: imageURL),
+ let uiImage = UIImage(data: imageData)
+ else { return }
- UIImageWriteToSavedPhotosAlbum(uiImage, nil, nil, nil)
+ await MainActor.run {
+ UIImageWriteToSavedPhotosAlbum(uiImage, nil, nil, nil)
+ }
}
- .resume()
} label: {
Label("Save to Photos", systemImage: "square.and.arrow.down")
}
@@ -75,12 +78,14 @@ struct PostDetailsImageView<Placeholder: View>: View {
Button {
#if os(iOS)
- let url = url
-
Task(priority: .userInitiated) {
- // swiftlint:disable:next legacy_objc_type
- if let data = NSData(contentsOf: url ?? URL(string: "")!) {
- UIPasteboard.general.image = UIImage(data: data as Data)
+ guard let imageURL = url else { return }
+ guard let imageData = await ImageCacheManager.shared.loadImageData(for: imageURL),
+ let uiImage = UIImage(data: imageData)
+ else { return }
+
+ await MainActor.run {
+ UIPasteboard.general.image = uiImage
}
}
#else