mirror of
https://github.com/signalapp/Signal-Android.git
synced 2025-12-24 04:58:45 +00:00
Fix action mode back handling in conversation fragment.
This commit is contained in:
committed by
jeffrey-signal
parent
18c7dbca08
commit
605b85455b
@@ -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()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user