diff --git a/app/src/main/java/org/thoughtcrime/securesms/main/MainActivityListHostFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/main/MainActivityListHostFragment.kt index 5269ce303d..6321ec21a3 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/main/MainActivityListHostFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/main/MainActivityListHostFragment.kt @@ -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() { diff --git a/app/src/main/java/org/thoughtcrime/securesms/main/MainToolbarViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/main/MainToolbarViewModel.kt index ef5ee7c3d6..b7ec78960f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/main/MainToolbarViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/main/MainToolbarViewModel.kt @@ -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) {