Fix action mode back handling in conversation fragment.

This commit is contained in:
Alex Hart
2025-10-29 13:11:29 -03:00
committed by jeffrey-signal
parent 18c7dbca08
commit 605b85455b
2 changed files with 15 additions and 2 deletions

View File

@@ -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()
}
}
}

View File

@@ -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
}
}