From 3aefd3bdc64f178e3b8b029d5309b859f04baba2 Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Thu, 24 Apr 2025 16:24:21 -0300 Subject: [PATCH] Prevent search state from clearing if user did not send a message. --- .../main/MainActivityListHostFragment.kt | 2 +- .../securesms/main/MainToolbarViewModel.kt | 25 +++++++++++++++---- 2 files changed, 21 insertions(+), 6 deletions(-) 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) {