From 90f0814fbcf20f1f0c5a10d8e7277845ae06ee7a Mon Sep 17 00:00:00 2001 From: Don Turner Date: Wed, 16 Jul 2025 11:49:49 +0100 Subject: [PATCH 1/3] Move back stack ownership to common module, add start destination at runtime --- .../nav3recipes/modular/hilt/AppModule.kt | 16 ---------------- .../nav3recipes/modular/hilt/CommonModule.kt | 4 ++-- .../nav3recipes/modular/hilt/ModularActivity.kt | 4 ++++ 3 files changed, 6 insertions(+), 18 deletions(-) delete mode 100644 app/src/main/java/com/example/nav3recipes/modular/hilt/AppModule.kt diff --git a/app/src/main/java/com/example/nav3recipes/modular/hilt/AppModule.kt b/app/src/main/java/com/example/nav3recipes/modular/hilt/AppModule.kt deleted file mode 100644 index 896c3af..0000000 --- a/app/src/main/java/com/example/nav3recipes/modular/hilt/AppModule.kt +++ /dev/null @@ -1,16 +0,0 @@ -package com.example.nav3recipes.modular.hilt - -import dagger.Module -import dagger.Provides -import dagger.hilt.InstallIn -import dagger.hilt.android.components.ActivityRetainedComponent -import dagger.hilt.android.scopes.ActivityRetainedScoped - -@Module -@InstallIn(ActivityRetainedComponent::class) -object AppModule { - - @Provides - @ActivityRetainedScoped - fun provideNavigator() : Navigator = Navigator(startDestination = ConversationList) -} diff --git a/app/src/main/java/com/example/nav3recipes/modular/hilt/CommonModule.kt b/app/src/main/java/com/example/nav3recipes/modular/hilt/CommonModule.kt index 9fd72e4..b20b9f2 100644 --- a/app/src/main/java/com/example/nav3recipes/modular/hilt/CommonModule.kt +++ b/app/src/main/java/com/example/nav3recipes/modular/hilt/CommonModule.kt @@ -10,8 +10,8 @@ import javax.inject.Inject typealias EntryProviderInstaller = EntryProviderBuilder.() -> Unit @ActivityRetainedScoped -class Navigator(startDestination: Any) { - val backStack : SnapshotStateList = mutableStateListOf(startDestination) +class Navigator @Inject constructor() { + val backStack : SnapshotStateList = mutableStateListOf() fun goTo(destination: Any){ backStack.add(destination) diff --git a/app/src/main/java/com/example/nav3recipes/modular/hilt/ModularActivity.kt b/app/src/main/java/com/example/nav3recipes/modular/hilt/ModularActivity.kt index 024809d..b6f6f91 100644 --- a/app/src/main/java/com/example/nav3recipes/modular/hilt/ModularActivity.kt +++ b/app/src/main/java/com/example/nav3recipes/modular/hilt/ModularActivity.kt @@ -37,6 +37,10 @@ class ModularActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + + // Add the start destination + navigator.goTo(ConversationList) + setEdgeToEdgeConfig() setContent { Scaffold { paddingValues -> From 230f27402c6f3863d3755a933bfbedb4f2d82bf2 Mon Sep 17 00:00:00 2001 From: Don Turner Date: Wed, 16 Jul 2025 18:32:23 +0100 Subject: [PATCH 2/3] Only add the start destination if the back stack is empty --- .../com/example/nav3recipes/modular/hilt/ModularActivity.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/example/nav3recipes/modular/hilt/ModularActivity.kt b/app/src/main/java/com/example/nav3recipes/modular/hilt/ModularActivity.kt index b6f6f91..d2f4f00 100644 --- a/app/src/main/java/com/example/nav3recipes/modular/hilt/ModularActivity.kt +++ b/app/src/main/java/com/example/nav3recipes/modular/hilt/ModularActivity.kt @@ -39,7 +39,9 @@ class ModularActivity : ComponentActivity() { super.onCreate(savedInstanceState) // Add the start destination - navigator.goTo(ConversationList) + if (navigator.backStack.isEmpty()){ + navigator.goTo(ConversationList) + } setEdgeToEdgeConfig() setContent { From 37b62f3db376847affef066d13d23cfdcdbdddae Mon Sep 17 00:00:00 2001 From: Don Turner Date: Thu, 17 Jul 2025 16:23:02 +0100 Subject: [PATCH 3/3] Improve check for restoring from saved state --- .../com/example/nav3recipes/modular/hilt/ModularActivity.kt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/src/main/java/com/example/nav3recipes/modular/hilt/ModularActivity.kt b/app/src/main/java/com/example/nav3recipes/modular/hilt/ModularActivity.kt index d2f4f00..2fda2ae 100644 --- a/app/src/main/java/com/example/nav3recipes/modular/hilt/ModularActivity.kt +++ b/app/src/main/java/com/example/nav3recipes/modular/hilt/ModularActivity.kt @@ -38,8 +38,7 @@ class ModularActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - // Add the start destination - if (navigator.backStack.isEmpty()){ + if (savedInstanceState == null){ navigator.goTo(ConversationList) }