summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFuwn <[email protected]>2025-02-27 00:36:15 -0800
committerFuwn <[email protected]>2025-02-27 00:36:15 -0800
commit208bc5c8f6d10f0358039ad024fd5bfa379f6c61 (patch)
treea880bbbf18d0009b4a33ef87266765957fa012e3
parentfeat: Development commit (diff)
downloadsora-testing-208bc5c8f6d10f0358039ad024fd5bfa379f6c61.tar.xz
sora-testing-208bc5c8f6d10f0358039ad024fd5bfa379f6c61.zip
feat: Development commit
-rw-r--r--Sora/Views/InteractiveImageView.swift9
-rw-r--r--Sora/Views/Post/Details/PostDetailsImageView.swift11
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 {