From d81616d23ca67f613ccbf81fe09e24b8fc59f03e Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Wed, 9 Apr 2025 10:45:37 -0300 Subject: [PATCH] Prevent conversation re-launch on reconfiguration of screen. --- .../org/thoughtcrime/securesms/MainActivity.kt | 2 +- .../securesms/main/MainNavigationViewModel.kt | 15 +++++++++------ 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/MainActivity.kt b/app/src/main/java/org/thoughtcrime/securesms/MainActivity.kt index 4f7b7f4f43..0d61b2dab7 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/MainActivity.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/MainActivity.kt @@ -130,7 +130,7 @@ class MainActivity : PassphraseRequiredActivity(), VoiceNoteMediaControllerOwner setContent { val navState = rememberFragmentState() val listHostState = rememberFragmentState() - val detailLocation by navigator.viewModel.detailLocation.collectAsStateWithLifecycle() + val detailLocation by navigator.viewModel.detailLocation.collectAsStateWithLifecycle(MainNavigationDetailLocation.Empty) LaunchedEffect(detailLocation) { if (detailLocation is MainNavigationDetailLocation.Conversation) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/main/MainNavigationViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/main/MainNavigationViewModel.kt index 09ec98ddbc..13600bebae 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/main/MainNavigationViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/main/MainNavigationViewModel.kt @@ -6,16 +6,19 @@ package org.thoughtcrime.securesms.main import androidx.lifecycle.ViewModel -import kotlinx.coroutines.flow.MutableStateFlow -import kotlinx.coroutines.flow.StateFlow -import kotlinx.coroutines.flow.update +import androidx.lifecycle.viewModelScope +import kotlinx.coroutines.flow.MutableSharedFlow +import kotlinx.coroutines.flow.SharedFlow +import kotlinx.coroutines.launch class MainNavigationViewModel : ViewModel() { - private val detailLocationFlow = MutableStateFlow(MainNavigationDetailLocation.Empty) + private val detailLocationFlow = MutableSharedFlow() - val detailLocation: StateFlow = detailLocationFlow + val detailLocation: SharedFlow = detailLocationFlow fun goTo(location: MainNavigationDetailLocation) { - detailLocationFlow.update { location } + viewModelScope.launch { + detailLocationFlow.emit(location) + } } }