diff options
| author | Fuwn <[email protected]> | 2025-02-25 02:09:49 -0800 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2025-02-25 02:09:49 -0800 |
| commit | 9975bdcf21e5ef898ac6a13fedb0d4e5998535bf (patch) | |
| tree | 0fb2eda7d76a16714285be62333cc3157e8c0985 | |
| parent | feat: Development commit (diff) | |
| download | sora-testing-9975bdcf21e5ef898ac6a13fedb0d4e5998535bf.tar.xz sora-testing-9975bdcf21e5ef898ac6a13fedb0d4e5998535bf.zip | |
feat: Development commit
| -rw-r--r-- | Sora/Views/Post/Details/PostDetailsImageView.swift | 71 |
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 } |