diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt index 810e48bfa6..c7e23cb73c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt @@ -934,6 +934,8 @@ class ConversationFragment : //endregion private fun startActionMode() { + viewModel.setIsInActionMode(true) + actionModeTopBarView.isVisible = true actionModeTopBarView.onCloseClick = this::finishActionMode actionModeTopBarView.title = calculateSelectedItemCount() @@ -958,6 +960,8 @@ class ConversationFragment : } private fun finishActionMode() { + viewModel.setIsInActionMode(false) + actionModeTopBarView.isVisible = false adapter.clearSelection() @@ -2497,6 +2501,8 @@ class ConversationFragment : reactionDelegate.hide() } else if (state.isSearchRequested) { searchMenuItem?.collapseActionView() + } else if (state.isInActionMode) { + finishActionMode() } } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationViewModel.kt index f4deebb47a..b2e956d57e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationViewModel.kt @@ -654,6 +654,12 @@ class ConversationViewModel( } } + fun setIsInActionMode(isInActionMode: Boolean) { + internalBackPressedState.update { + it.copy(isInActionMode = isInActionMode) + } + } + fun toggleVote(poll: PollRecord, pollOption: PollOption, isChecked: Boolean) { viewModelScope.launch(Dispatchers.IO) { val voteCount = if (isChecked) { @@ -678,8 +684,9 @@ class ConversationViewModel( data class BackPressedState( val isReactionDelegateShowing: Boolean = false, - val isSearchRequested: Boolean = false + val isSearchRequested: Boolean = false, + val isInActionMode: Boolean = false ) { - fun shouldHandleBackPressed() = isSearchRequested || isReactionDelegateShowing + fun shouldHandleBackPressed() = isSearchRequested || isReactionDelegateShowing || isInActionMode } }