diff --git a/Signal/src/ViewControllers/ConversationView/ConversationViewController+MessageActions.swift b/Signal/src/ViewControllers/ConversationView/ConversationViewController+MessageActions.swift index 6bdff3eee2..e42fb09ce8 100644 --- a/Signal/src/ViewControllers/ConversationView/ConversationViewController+MessageActions.swift +++ b/Signal/src/ViewControllers/ConversationView/ConversationViewController+MessageActions.swift @@ -323,10 +323,17 @@ extension ConversationViewController: ContextMenuInteractionDelegate { if let contextInteraction = interaction as? ChatHistoryContextMenuInteraction, let cell = contextInteraction.view as? CVCell, let componentView = cell.componentView { componentView.contextMenuPresentationDidEnd?() + // Restore the keyboard unless the context menu item presented + // a view controller. if contextInteraction.keyboardWasActive { - popKeyBoard() + if self.presentedViewController == nil { + popKeyBoard() + } else { + // If we're not going to restore the keyboard, update + // chat history layout. + self.loadCoordinator.enqueueReload() + } } - } collectionViewActiveContextMenuInteraction = nil diff --git a/Signal/src/ViewControllers/ConversationView/ConversationViewController+MessageActionsDelegate.swift b/Signal/src/ViewControllers/ConversationView/ConversationViewController+MessageActionsDelegate.swift index 8f0fc9baf2..bbd89b749c 100644 --- a/Signal/src/ViewControllers/ConversationView/ConversationViewController+MessageActionsDelegate.swift +++ b/Signal/src/ViewControllers/ConversationView/ConversationViewController+MessageActionsDelegate.swift @@ -81,6 +81,8 @@ extension ConversationViewController: MessageActionsDelegate { } func messageActionsForwardItem(_ itemViewModel: CVItemViewModelImpl) { + AssertIsOnMainThread() + ForwardMessageViewController.present(forItemViewModels: [itemViewModel], from: self, delegate: self) diff --git a/Signal/src/ViewControllers/ConversationView/ConversationViewController+Selection.swift b/Signal/src/ViewControllers/ConversationView/ConversationViewController+Selection.swift index 3375268885..5ea47f0531 100644 --- a/Signal/src/ViewControllers/ConversationView/ConversationViewController+Selection.swift +++ b/Signal/src/ViewControllers/ConversationView/ConversationViewController+Selection.swift @@ -362,6 +362,8 @@ extension ConversationViewController { } func didTapForwardSelectedItems() { + AssertIsOnMainThread() + let selectionItems = self.selectionState.selectionItems guard !selectionItems.isEmpty else { owsFailDebug("Invalid selection.")