diff --git a/core-navigation/src/main/java/com/google/samples/apps/nowinandroid/core/navigation/NiaNavigationDestination.kt b/core-navigation/src/main/java/com/google/samples/apps/nowinandroid/core/navigation/NiaNavigationDestination.kt index af3303f18..8884b70a6 100644 --- a/core-navigation/src/main/java/com/google/samples/apps/nowinandroid/core/navigation/NiaNavigationDestination.kt +++ b/core-navigation/src/main/java/com/google/samples/apps/nowinandroid/core/navigation/NiaNavigationDestination.kt @@ -36,3 +36,11 @@ interface NiaNavigationDestination { */ val destination: String } + +interface NiaNavigationWithArguments { + + /** + * Defines the arguments on the screen, which will be combined with the screen route. + */ + val routeWithArguments: String +} \ No newline at end of file diff --git a/feature-author/src/main/java/com/google/samples/apps/nowinandroid/feature/author/navigation/AuthorNavigation.kt b/feature-author/src/main/java/com/google/samples/apps/nowinandroid/feature/author/navigation/AuthorNavigation.kt index 983ef69cd..b235ae8fa 100644 --- a/feature-author/src/main/java/com/google/samples/apps/nowinandroid/feature/author/navigation/AuthorNavigation.kt +++ b/feature-author/src/main/java/com/google/samples/apps/nowinandroid/feature/author/navigation/AuthorNavigation.kt @@ -21,19 +21,23 @@ import androidx.navigation.NavType import androidx.navigation.compose.composable import androidx.navigation.navArgument import com.google.samples.apps.nowinandroid.core.navigation.NiaNavigationDestination +import com.google.samples.apps.nowinandroid.core.navigation.NiaNavigationWithArguments import com.google.samples.apps.nowinandroid.feature.author.AuthorRoute -object AuthorDestination : NiaNavigationDestination { +object AuthorDestination : NiaNavigationDestination, NiaNavigationWithArguments { override val route = "author_route" override val destination = "author_destination" const val authorIdArg = "authorId" + + override val routeWithArguments: String + get() = route.plus("/{$authorIdArg}") } fun NavGraphBuilder.authorGraph( onBackClick: () -> Unit ) { composable( - route = "${AuthorDestination.route}/{${AuthorDestination.authorIdArg}}", + route = AuthorDestination.routeWithArguments, arguments = listOf( navArgument(AuthorDestination.authorIdArg) { type = NavType.StringType @@ -42,4 +46,4 @@ fun NavGraphBuilder.authorGraph( ) { AuthorRoute(onBackClick = onBackClick) } -} +} \ No newline at end of file diff --git a/feature-topic/src/main/java/com/google/samples/apps/nowinandroid/feature/topic/navigation/TopicNavigation.kt b/feature-topic/src/main/java/com/google/samples/apps/nowinandroid/feature/topic/navigation/TopicNavigation.kt index 39d3b0875..e9a1ffa99 100644 --- a/feature-topic/src/main/java/com/google/samples/apps/nowinandroid/feature/topic/navigation/TopicNavigation.kt +++ b/feature-topic/src/main/java/com/google/samples/apps/nowinandroid/feature/topic/navigation/TopicNavigation.kt @@ -21,19 +21,23 @@ import androidx.navigation.NavType import androidx.navigation.compose.composable import androidx.navigation.navArgument import com.google.samples.apps.nowinandroid.core.navigation.NiaNavigationDestination +import com.google.samples.apps.nowinandroid.core.navigation.NiaNavigationWithArguments import com.google.samples.apps.nowinandroid.feature.topic.TopicRoute -object TopicDestination : NiaNavigationDestination { +object TopicDestination : NiaNavigationDestination, NiaNavigationWithArguments { override val route = "topic_route" override val destination = "topic_destination" const val topicIdArg = "topicId" + + override val routeWithArguments: String + get() = route.plus("/{$topicIdArg}") } fun NavGraphBuilder.topicGraph( onBackClick: () -> Unit ) { composable( - route = "${TopicDestination.route}/{${TopicDestination.topicIdArg}}", + route = TopicDestination.routeWithArguments, arguments = listOf( navArgument(TopicDestination.topicIdArg) { type = NavType.StringType @@ -42,4 +46,4 @@ fun NavGraphBuilder.topicGraph( ) { TopicRoute(onBackClick = onBackClick) } -} +} \ No newline at end of file