From 8d4049f0dad51753fbf10d05a2d02a63d5a133f7 Mon Sep 17 00:00:00 2001 From: ryanzhao Date: Fri, 4 Aug 2023 12:01:30 +1000 Subject: [PATCH] push back to previous screen when tapping actions in message info screen --- .../ConversationVC+Interaction.swift | 10 +++++---- .../MessageInfoView.swift | 22 ++++++++++++++++++- 2 files changed, 27 insertions(+), 5 deletions(-) diff --git a/Session/Conversations/ConversationVC+Interaction.swift b/Session/Conversations/ConversationVC+Interaction.swift index ab4697e40..bca74436d 100644 --- a/Session/Conversations/ConversationVC+Interaction.swift +++ b/Session/Conversations/ConversationVC+Interaction.swift @@ -1645,10 +1645,12 @@ extension ConversationVC: using: dependencies ) ?? [] - let messageInfoView = MessageInfoView(actions: actions, messageViewModel: cellViewModel) - let hostingViewController = UIHostingController(rootView: messageInfoView) - hostingViewController.title = "message_info_title".localized() - navigationController?.pushViewController(hostingViewController, animated: true) + let messageInfoViewController = MessageInfoViewController( + actions: actions, + messageViewModel: cellViewModel + ) + messageInfoViewController.title = "message_info_title".localized() + navigationController?.pushViewController(messageInfoViewController, animated: true) } func retry(_ cellViewModel: MessageViewModel, using dependencies: Dependencies) { diff --git a/Session/Media Viewing & Editing/MessageInfoView.swift b/Session/Media Viewing & Editing/MessageInfoView.swift index d736804bd..ea04f528c 100644 --- a/Session/Media Viewing & Editing/MessageInfoView.swift +++ b/Session/Media Viewing & Editing/MessageInfoView.swift @@ -381,7 +381,7 @@ struct MessageInfoView: View { .frame(width: .infinity, height: 60) .onTapGesture { actions[index].work() - dismiss() + dismiss?() } if index < (actions.count - 1) { @@ -444,6 +444,26 @@ struct InfoBlock: View where Content: View { } } +final class MessageInfoViewController: UIHostingController { + init(actions: [ContextMenuVC.Action], messageViewModel: MessageViewModel) { + let messageInfoView = MessageInfoView( + actions: actions, + messageViewModel: messageViewModel + ) + + super.init(rootView: messageInfoView) + rootView.dismiss = dismiss + } + + @MainActor required dynamic init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + func dismiss() { + self.navigationController?.popViewController(animated: true) + } +} + struct MessageInfoView_Previews: PreviewProvider { static var messageViewModel: MessageViewModel { let result = MessageViewModel(