Skip to content

Commit 0d9484c

Browse files
committed
Reset back-press callback on Loading and Empty in ChatHistoryFragment
The callback's isEnabled flag was only assigned inside the Loaded branch of render(); a transition out of Loaded (e.g. last chat deleted externally while in select mode) left it enabled but with no matching case in handleOnBackPressed, silently consuming every back press and the toolbar nav arrow. Re-derive isEnabled from the rendered state at the end of render() via a pure helper, so every transition recomputes it and any future state defaults to off.
1 parent e9d8f7c commit 0d9484c

1 file changed

Lines changed: 9 additions & 2 deletions

File tree

duckchat/duckchat-impl/src/main/java/com/duckduckgo/duckchat/impl/history/ChatHistoryFragment.kt

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -143,16 +143,23 @@ class ChatHistoryFragment : DuckDuckGoFragment(R.layout.fragment_chat_history) {
143143
if (selectMode != null) {
144144
applySelectModeToolbar(selectMode.selectedChatIds.size)
145145
setFireActionVisible(selectMode.selectedChatIds.isNotEmpty())
146-
onBackPressedCallback.isEnabled = true
147146
} else {
148147
applyDefaultToolbar()
149148
// Hide fire when Recent is empty — title is "Delete N chats?" of the Recent count.
150149
setFireActionVisible(state.recent.isNotEmpty())
151-
onBackPressedCallback.isEnabled = binding.searchBar.isVisible
152150
}
153151
renderConfirmation(state.confirmation)
154152
}
155153
}
154+
// Re-derive every render so a transition out of Loaded (e.g. last chat deleted externally)
155+
// can't leave us intercepting back presses with no overlay to dismiss.
156+
onBackPressedCallback.isEnabled = shouldInterceptBack(state)
157+
}
158+
159+
private fun shouldInterceptBack(state: ChatHistoryUiState): Boolean {
160+
if (binding.searchBar.isVisible) return true
161+
val loaded = state as? ChatHistoryUiState.Loaded ?: return false
162+
return loaded.mode is ChatHistoryUiState.Mode.Selecting
156163
}
157164

158165
private fun applyDefaultToolbar() {

0 commit comments

Comments
 (0)