Prevent search state from clearing if user did not send a message.

This commit is contained in:
Alex Hart
2025-04-24 16:24:21 -03:00
committed by Cody Henthorne
parent d6eb675fd0
commit 3aefd3bdc6
2 changed files with 21 additions and 6 deletions

View File

@@ -141,7 +141,7 @@ class MainActivityListHostFragment : Fragment(R.layout.main_activity_list_host_f
}
private fun presentToolbarForConversationListFragment() {
toolbarViewModel.setToolbarMode(MainToolbarMode.FULL, destination = MainNavigationListLocation.CHATS)
toolbarViewModel.setToolbarMode(MainToolbarMode.FULL, destination = MainNavigationListLocation.CHATS, overwriteSearchMode = false)
}
private fun presentToolbarForConversationListArchiveFragment() {

View File

@@ -74,14 +74,29 @@ class MainToolbarViewModel : ViewModel() {
}
@JvmOverloads
fun setToolbarMode(mode: MainToolbarMode, destination: MainNavigationListLocation? = null) {
fun setToolbarMode(
mode: MainToolbarMode,
destination: MainNavigationListLocation? = null,
overwriteSearchMode: Boolean = true
) {
val previousMode = internalStateFlow.value.mode
internalStateFlow.update {
it.copy(mode = mode, destination = destination ?: it.destination, searchQuery = "")
val newMode = if (previousMode == MainToolbarMode.SEARCH && !overwriteSearchMode) {
previousMode
} else {
mode
}
emitPossibleSearchStateChangeEvent(previousMode, mode)
val newSearchQuery = if (previousMode == MainToolbarMode.SEARCH && !overwriteSearchMode) {
internalStateFlow.value.searchQuery
} else {
""
}
internalStateFlow.update {
it.copy(mode = newMode, destination = destination ?: it.destination, searchQuery = newSearchQuery)
}
emitPossibleSearchStateChangeEvent(previousMode, newMode)
}
fun setProxyState(proxyState: MainToolbarState.ProxyState) {