diff --git a/app/src/main/java/org/thoughtcrime/securesms/MainActivity.kt b/app/src/main/java/org/thoughtcrime/securesms/MainActivity.kt index 90690e90b8..68d02981bb 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/MainActivity.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/MainActivity.kt @@ -753,6 +753,7 @@ class MainActivity : PassphraseRequiredActivity(), VoiceNoteMediaControllerOwner private fun handleConversationIntent(intent: Intent) { if (ConversationIntents.isConversationIntent(intent)) { + Log.d(TAG, "Got conversation intent. Navigating to conversation.") mainNavigationViewModel.goTo(MainNavigationListLocation.CHATS) mainNavigationViewModel.goTo(MainNavigationDetailLocation.Conversation(intent)) } diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationActivity.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationActivity.kt index 5fa64a57f4..b9bef69b92 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationActivity.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationActivity.kt @@ -66,6 +66,7 @@ open class ConversationActivity : PassphraseRequiredActivity(), VoiceNoteMediaCo } finish() + return } enableSavedStateHandles() 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 32234518c7..cd39e87e16 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/main/MainNavigationViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/main/MainNavigationViewModel.kt @@ -68,6 +68,9 @@ class MainNavigationViewModel( private val internalTabClickEvents: MutableSharedFlow = MutableSharedFlow() val tabClickEvents: Observable = internalTabClickEvents.asObservable() + private var earlyNavigationListLocationRequested: MainNavigationListLocation? = null + private var earlyNavigationDetailLocationRequested: MainNavigationDetailLocation? = null + init { performStoreUpdate(MainNavigationRepository.getNumberOfUnreadMessages()) { unreadChats, state -> state.copy(chatsCount = unreadChats.toInt()) @@ -94,6 +97,19 @@ class MainNavigationViewModel( this.goToLegacyDetailLocation = goToLegacyDetailLocation this.navigatorScope = composeScope this.navigator = threePaneScaffoldNavigator + + earlyNavigationListLocationRequested?.let { + goTo(it) + } + + earlyNavigationListLocationRequested = null + + earlyNavigationDetailLocationRequested?.let { + goTo(it) + } + + earlyNavigationDetailLocationRequested = null + return threePaneScaffoldNavigator } @@ -107,6 +123,11 @@ class MainNavigationViewModel( return } + if (navigator == null) { + earlyNavigationDetailLocationRequested = location + return + } + internalDetailLocation.update { location } @@ -128,6 +149,11 @@ class MainNavigationViewModel( } fun goTo(location: MainNavigationListLocation) { + if (navigator == null) { + earlyNavigationListLocationRequested = location + return + } + if (location != MainNavigationListLocation.CHATS) { internalDetailLocation.update { MainNavigationDetailLocation.Empty