summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFuwn <[email protected]>2025-02-25 02:09:49 -0800
committerFuwn <[email protected]>2025-02-25 02:09:49 -0800
commit9975bdcf21e5ef898ac6a13fedb0d4e5998535bf (patch)
tree0fb2eda7d76a16714285be62333cc3157e8c0985
parentfeat: Development commit (diff)
downloadsora-testing-9975bdcf21e5ef898ac6a13fedb0d4e5998535bf.tar.xz
sora-testing-9975bdcf21e5ef898ac6a13fedb0d4e5998535bf.zip
feat: Development commit
-rw-r--r--Sora/Views/Post/Details/PostDetailsImageView.swift71
1 files changed, 43 insertions, 28 deletions
diff --git a/Sora/Views/Post/Details/PostDetailsImageView.swift b/Sora/Views/Post/Details/PostDetailsImageView.swift
index 46a8c5e..1ff080e 100644
--- a/Sora/Views/Post/Details/PostDetailsImageView.swift
+++ b/Sora/Views/Post/Details/PostDetailsImageView.swift
@@ -30,7 +30,7 @@ struct PostDetailsImageView<Placeholder: View>: View {
#endif
var body: some View {
- NetworkImage(
+ let content = NetworkImage(
url: url,
transaction: Transaction(animation: .default)
) { image in
@@ -96,6 +96,19 @@ struct PostDetailsImageView<Placeholder: View>: View {
loadingState = .loadingPreview
}
}
+
+ #if os(macOS)
+ return content.overlay(
+ Button(action: saveImageToPicturesFolder) {
+ EmptyView()
+ }
+ .keyboardShortcut("s", modifiers: [.command])
+ .frame(width: 0, height: 0)
+ .opacity(0)
+ )
+ #else
+ return content
+ #endif
}
init(
@@ -121,36 +134,38 @@ struct PostDetailsImageView<Placeholder: View>: View {
self.post = post
}
- private func saveImageToPicturesFolder() {
- guard let url = self.url else { return }
+ #if os(macOS)
+ private func saveImageToPicturesFolder() {
+ guard let url = self.url else { return }
- URLSession.shared.dataTask(with: url) { data, _, _ in
- guard let data, let post else { return }
+ URLSession.shared.dataTask(with: url) { data, _, _ in
+ guard let data, let post else { return }
- let picturesURL = FileManager.default.homeDirectoryForCurrentUser
- .appendingPathComponent("Pictures/Sora")
+ let picturesURL = FileManager.default.homeDirectoryForCurrentUser
+ .appendingPathComponent("Pictures/Sora")
- do {
- try FileManager.default.createDirectory(
- at: picturesURL,
- withIntermediateDirectories: true
- )
- try data.write(
- to:
- picturesURL
- .appendingPathComponent("\(post.id).\(url.pathExtension)")
- )
- try post.tags.joined(separator: "\n").write(
- to: picturesURL.appendingPathComponent(
- "\(post.id).txt"
- ),
- atomically: true,
- encoding: .utf8
- )
- } catch {
- print("PostDetailsImageView.saveImageToPicturesFolder: \(error)")
+ do {
+ try FileManager.default.createDirectory(
+ at: picturesURL,
+ withIntermediateDirectories: true
+ )
+ try data.write(
+ to:
+ picturesURL
+ .appendingPathComponent("\(post.id).\(url.pathExtension)")
+ )
+ try post.tags.joined(separator: "\n").write(
+ to: picturesURL.appendingPathComponent(
+ "\(post.id).txt"
+ ),
+ atomically: true,
+ encoding: .utf8
+ )
+ } catch {
+ print("PostDetailsImageView.saveImageToPicturesFolder: \(error)")
+ }
}
+ .resume()
}
- .resume()
- }
+ #endif
}