diff --git a/app/src/main/kotlin/com/google/samples/apps/nowinandroid/navigation/NiaNavHost.kt b/app/src/main/kotlin/com/google/samples/apps/nowinandroid/navigation/NiaNavHost.kt index 138be2e1d..c81365a81 100644 --- a/app/src/main/kotlin/com/google/samples/apps/nowinandroid/navigation/NiaNavHost.kt +++ b/app/src/main/kotlin/com/google/samples/apps/nowinandroid/navigation/NiaNavHost.kt @@ -29,6 +29,7 @@ import com.google.samples.apps.nowinandroid.feature.foryou.navigation.ForYouBase import com.google.samples.apps.nowinandroid.feature.foryou.navigation.forYouSection import com.google.samples.apps.nowinandroid.feature.interests.navigation.InterestsRoute import com.google.samples.apps.nowinandroid.feature.interests.navigation.navigateToInterests +import com.google.samples.apps.nowinandroid.feature.search.navigation.SearchRoute import com.google.samples.apps.nowinandroid.feature.search.navigation.searchScreen import com.google.samples.apps.nowinandroid.feature.topic.navigation.TopicRoute import com.google.samples.apps.nowinandroid.feature.topic.navigation.topicScreen @@ -71,11 +72,7 @@ fun NiaNavHost( composable{} } composable {} - searchScreen( - onBackClick = navController::popBackStack, - onInterestsClick = { appState.navigateToTopLevelDestination(INTERESTS) }, - onTopicClick = navController::navigateToInterests, - ) + composable {} interestsListDetailScreen() } } @@ -94,6 +91,11 @@ fun NiaNavHost( nav3Navigator.goTo(route = TopicRoute(it)) }, ) + searchScreen( + onBackClick = navController::popBackStack, + onInterestsClick = { appState.navigateToTopLevelDestination(INTERESTS) }, + onTopicClick = navController::navigateToInterests, + ) }, ) } diff --git a/app/src/main/kotlin/com/google/samples/apps/nowinandroid/ui/NiaAppState.kt b/app/src/main/kotlin/com/google/samples/apps/nowinandroid/ui/NiaAppState.kt index 1777cef1a..a77b3c2dd 100644 --- a/app/src/main/kotlin/com/google/samples/apps/nowinandroid/ui/NiaAppState.kt +++ b/app/src/main/kotlin/com/google/samples/apps/nowinandroid/ui/NiaAppState.kt @@ -40,6 +40,7 @@ import com.google.samples.apps.nowinandroid.core.ui.TrackDisposableJank import com.google.samples.apps.nowinandroid.feature.bookmarks.api.navigation.BookmarksRoute import com.google.samples.apps.nowinandroid.feature.foryou.navigation.navigateToForYou import com.google.samples.apps.nowinandroid.feature.interests.navigation.navigateToInterests +import com.google.samples.apps.nowinandroid.feature.search.navigation.SearchRoute import com.google.samples.apps.nowinandroid.feature.search.navigation.navigateToSearch import com.google.samples.apps.nowinandroid.feature.topic.navigation.TopicRoute import com.google.samples.apps.nowinandroid.navigation.TopLevelDestination @@ -215,7 +216,8 @@ class Nav3NavigatorSimple(val navController: NavHostController){ private val migratedRoutes = listOf( BookmarksRoute::class, - TopicRoute::class + TopicRoute::class, + SearchRoute::class ).associateBy { it.qualifiedName } // TODO: We are using Dispatchers.Main so that we can access SavedStateHandle in toRoute, @@ -243,6 +245,7 @@ class Nav3NavigatorSimple(val navController: NavHostController){ when (className) { BookmarksRoute::class.qualifiedName -> entry.toRoute() TopicRoute::class.qualifiedName -> entry.toRoute() + SearchRoute::class.qualifiedName -> entry.toRoute() else -> entry } } diff --git a/feature/search/build.gradle.kts b/feature/search/build.gradle.kts index 5bb659c35..13e8cd7a8 100644 --- a/feature/search/build.gradle.kts +++ b/feature/search/build.gradle.kts @@ -27,6 +27,7 @@ android { dependencies { implementation(projects.core.data) implementation(projects.core.domain) + implementation(projects.core.navigation) testImplementation(projects.core.testing) diff --git a/feature/search/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/search/navigation/SearchNavigation.kt b/feature/search/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/search/navigation/SearchNavigation.kt index 3b16e5f71..0cdd6b01c 100644 --- a/feature/search/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/search/navigation/SearchNavigation.kt +++ b/feature/search/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/search/navigation/SearchNavigation.kt @@ -20,6 +20,8 @@ import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.NavOptions import androidx.navigation.compose.composable +import androidx.navigation3.runtime.EntryProviderBuilder +import androidx.navigation3.runtime.entry import com.google.samples.apps.nowinandroid.feature.search.SearchRoute import kotlinx.serialization.Serializable @@ -28,14 +30,14 @@ import kotlinx.serialization.Serializable fun NavController.navigateToSearch(navOptions: NavOptions? = null) = navigate(SearchRoute, navOptions) -fun NavGraphBuilder.searchScreen( +fun EntryProviderBuilder.searchScreen( onBackClick: () -> Unit, onInterestsClick: () -> Unit, onTopicClick: (String) -> Unit, ) { // TODO: Handle back stack for each top-level destination. At the moment each top-level // destination may have own search screen's back stack. - composable { + entry { SearchRoute( onBackClick = onBackClick, onInterestsClick = onInterestsClick,