From 9975bdcf21e5ef898ac6a13fedb0d4e5998535bf Mon Sep 17 00:00:00 2001 From: Fuwn Date: Tue, 25 Feb 2025 02:09:49 -0800 Subject: feat: Development commit --- Sora/Views/Post/Details/PostDetailsImageView.swift | 71 +++++++++++++--------- 1 file 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: View { #endif var body: some View { - NetworkImage( + let content = NetworkImage( url: url, transaction: Transaction(animation: .default) ) { image in @@ -96,6 +96,19 @@ struct PostDetailsImageView: 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: 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 } -- cgit v1.2.3