diff --git a/apps/ios/Shared/Views/Chat/ChatView.swift b/apps/ios/Shared/Views/Chat/ChatView.swift index 9ecf04c011..fd94e96a33 100644 --- a/apps/ios/Shared/Views/Chat/ChatView.swift +++ b/apps/ios/Shared/Views/Chat/ChatView.swift @@ -442,9 +442,13 @@ struct ChatView: View { var body: some View { let alignment: Alignment = ci.chatDir.sent ? .trailing : .leading - + let uiMenu: Binding = Binding( + get: { UIMenu(title: "", children: menu(live: composeState.liveMessage != nil)) }, + set: { _ in } + ) + ChatItemView(chatInfo: chat.chatInfo, chatItem: ci, showMember: showMember, maxWidth: maxWidth, scrollProxy: scrollProxy, revealed: $revealed) - .uiKitContextMenu(actions: menu()) + .uiKitContextMenu(menu: uiMenu) .confirmationDialog("Delete message?", isPresented: $showDeleteMessage, titleVisibility: .visible) { Button("Delete for me", role: .destructive) { deleteMessage(.cidmInternal) @@ -459,10 +463,10 @@ struct ChatView: View { .frame(minWidth: 0, maxWidth: .infinity, alignment: alignment) } - private func menu() -> [UIAction] { + private func menu(live: Bool) -> [UIAction] { var menu: [UIAction] = [] if let mc = ci.content.msgContent, !ci.meta.itemDeleted || revealed { - if !ci.meta.itemDeleted && !ci.isLiveDummy && composeState.liveMessage == nil { + if !ci.meta.itemDeleted && !ci.isLiveDummy && !live { menu.append(replyUIAction()) } menu.append(shareUIAction()) @@ -478,13 +482,15 @@ struct ChatView: View { menu.append(saveFileAction(filePath)) } } - if ci.meta.editable && !mc.isVoice { + if ci.meta.editable && !mc.isVoice && !live { menu.append(editAction()) } if revealed { menu.append(hideUIAction()) } - menu.append(deleteUIAction()) + if !live || !ci.meta.isLive { + menu.append(deleteUIAction()) + } } else if ci.meta.itemDeleted { menu.append(revealUIAction()) menu.append(deleteUIAction()) diff --git a/apps/ios/Shared/Views/Helpers/ContextMenu.swift b/apps/ios/Shared/Views/Helpers/ContextMenu.swift index e2342c274b..4efc114032 100644 --- a/apps/ios/Shared/Views/Helpers/ContextMenu.swift +++ b/apps/ios/Shared/Views/Helpers/ContextMenu.swift @@ -11,10 +11,10 @@ import UIKit import SwiftUI extension View { - func uiKitContextMenu(title: String = "", actions: [UIAction]) -> some View { + func uiKitContextMenu(menu: Binding) -> some View { self.overlay(Color(uiColor: .systemBackground)) .overlay( - InteractionView(content: self, menu: UIMenu(title: title, children: actions)) + InteractionView(content: self, menu: menu) ) } } @@ -26,7 +26,7 @@ private struct InteractionConfig { private struct InteractionView: UIViewRepresentable { let content: Content - let menu: UIMenu + @Binding var menu: UIMenu func makeUIView(context: Context) -> UIView { let view = UIView()