diff options
| author | Fuwn <[email protected]> | 2025-02-27 00:36:15 -0800 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2025-02-27 00:36:15 -0800 |
| commit | 208bc5c8f6d10f0358039ad024fd5bfa379f6c61 (patch) | |
| tree | a880bbbf18d0009b4a33ef87266765957fa012e3 | |
| parent | feat: Development commit (diff) | |
| download | sora-testing-208bc5c8f6d10f0358039ad024fd5bfa379f6c61.tar.xz sora-testing-208bc5c8f6d10f0358039ad024fd5bfa379f6c61.zip | |
feat: Development commit
| -rw-r--r-- | Sora/Views/InteractiveImageView.swift | 9 | ||||
| -rw-r--r-- | Sora/Views/Post/Details/PostDetailsImageView.swift | 11 |
2 files changed, 12 insertions, 8 deletions
diff --git a/Sora/Views/InteractiveImageView.swift b/Sora/Views/InteractiveImageView.swift index c40785f..dfee98f 100644 --- a/Sora/Views/InteractiveImageView.swift +++ b/Sora/Views/InteractiveImageView.swift @@ -1,7 +1,8 @@ import SwiftUI -struct InteractiveImageView: View { +struct InteractiveImageView<ContextMenuContent: View>: View { let image: Image + let contextMenu: ContextMenuContent @State private var screenWidth = 0.0 @State private var screenHeight = 0.0 @State private var currentScale = 1.0 @@ -16,6 +17,7 @@ struct InteractiveImageView: View { .scaledToFit() .scaleEffect(currentScale, anchor: zoomAnchor) .offset(currentOffset) + .contextMenu { contextMenu } .frame(maxWidth: .infinity, maxHeight: .infinity) .clipped() .background( @@ -91,5 +93,8 @@ struct InteractiveImageView: View { } #Preview { - InteractiveImageView(image: Image(systemName: "photo")) + InteractiveImageView( + image: Image(systemName: "photo"), + contextMenu: EmptyView() + ) } diff --git a/Sora/Views/Post/Details/PostDetailsImageView.swift b/Sora/Views/Post/Details/PostDetailsImageView.swift index 14b929b..7287ec2 100644 --- a/Sora/Views/Post/Details/PostDetailsImageView.swift +++ b/Sora/Views/Post/Details/PostDetailsImageView.swift @@ -35,12 +35,9 @@ struct PostDetailsImageView<Placeholder: View>: View { url: url, transaction: Transaction(animation: .default) ) { image in - InteractiveImageView(image: image) - .onAppear { - loadingState = finalLoadingState - } - .background(.background) - .contextMenu { + InteractiveImageView( + image: image, + contextMenu: Group { #if os(iOS) Button { guard let url else { return } @@ -93,6 +90,8 @@ struct PostDetailsImageView<Placeholder: View>: View { } } } + ) + .onAppear { loadingState = finalLoadingState } } placeholder: { placeholder() .onAppear { |