From 81d7aad0c642b04031caa281c70aa673dc79ebae Mon Sep 17 00:00:00 2001 From: Ray <154766448+damontecres@users.noreply.github.com> Date: Tue, 20 Jan 2026 13:49:46 -0500 Subject: [PATCH] Fix crash when starting app from next up (#730) ## Description Fixes a possible crash starting the app from the next up row ### Related issues Fixes #729 --- .../java/com/github/damontecres/wholphin/MainActivity.kt | 6 +++++- .../damontecres/wholphin/services/NavigationManager.kt | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/github/damontecres/wholphin/MainActivity.kt b/app/src/main/java/com/github/damontecres/wholphin/MainActivity.kt index dace5d60..c7b12bfc 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/MainActivity.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/MainActivity.kt @@ -150,7 +150,6 @@ class MainActivity : AppCompatActivity() { } } viewModel.appStart() - val requestedDestination = this.intent?.let(::extractDestination) setContent { val appPreferences by userPreferencesDataStore.data.collectAsState(null) appPreferences?.let { appPreferences -> @@ -257,6 +256,10 @@ class MainActivity : AppCompatActivity() { } if (showContent) { + val requestedDestination = + remember(intent) { + intent?.let(::extractDestination) + } ApplicationContent( user = current.user, server = current.server, @@ -344,6 +347,7 @@ class MainActivity : AppCompatActivity() { override fun onNewIntent(intent: Intent) { super.onNewIntent(intent) Timber.v("onNewIntent") + setIntent(intent) extractDestination(intent)?.let { navigationManager.replace(it) } diff --git a/app/src/main/java/com/github/damontecres/wholphin/services/NavigationManager.kt b/app/src/main/java/com/github/damontecres/wholphin/services/NavigationManager.kt index 63a85cef..a1754298 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/services/NavigationManager.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/services/NavigationManager.kt @@ -75,7 +75,11 @@ class NavigationManager while (backStack.size > 1) { backStack.removeLastOrNull() } - backStack[0] = destination + if (backStack.isEmpty()) { + backStack.add(0, destination) + } else { + backStack[0] = destination + } log() }