From 2f6f3b4342ef2740cdc9546752e6409f2e511dc3 Mon Sep 17 00:00:00 2001 From: Don Turner Date: Thu, 30 May 2024 12:16:42 +0100 Subject: [PATCH] Rename Destinations to Routes Change-Id: Ie9120031fc3738d0640c922624f15db0e15417d7 --- .../nowinandroid/navigation/NiaNavHost.kt | 4 +-- .../navigation/TopLevelDestination.kt | 12 ++++----- .../apps/nowinandroid/ui/NiaAppState.kt | 12 ++++----- .../interests2pane/Interests2PaneViewModel.kt | 6 ++--- .../InterestsListDetailScreen.kt | 26 +++++++++---------- .../navigation/BookmarksNavigation.kt | 6 ++--- .../foryou/navigation/ForYouNavigation.kt | 8 +++--- .../feature/interests/InterestsViewModel.kt | 6 ++--- .../navigation/InterestsNavigation.kt | 4 +-- .../interests/InterestsViewModelTest.kt | 4 +-- .../feature/topic/TopicViewModel.kt | 4 +-- .../topic/navigation/TopicNavigation.kt | 6 ++--- 12 files changed, 49 insertions(+), 49 deletions(-) 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 23ff1edc7..141c86916 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 @@ -20,7 +20,7 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.navigation.compose.NavHost import com.google.samples.apps.nowinandroid.feature.bookmarks.navigation.bookmarksScreen -import com.google.samples.apps.nowinandroid.feature.foryou.navigation.ForYouDestination +import com.google.samples.apps.nowinandroid.feature.foryou.navigation.ForYouRoute import com.google.samples.apps.nowinandroid.feature.foryou.navigation.forYouScreen import com.google.samples.apps.nowinandroid.feature.interests.navigation.navigateToInterests import com.google.samples.apps.nowinandroid.feature.search.navigation.searchScreen @@ -44,7 +44,7 @@ fun NiaNavHost( val navController = appState.navController NavHost( navController = navController, - startDestination = ForYouDestination(), + startDestination = ForYouRoute(), modifier = modifier, ) { forYouScreen(onTopicClick = navController::navigateToInterests) diff --git a/app/src/main/kotlin/com/google/samples/apps/nowinandroid/navigation/TopLevelDestination.kt b/app/src/main/kotlin/com/google/samples/apps/nowinandroid/navigation/TopLevelDestination.kt index c8af595b8..ac04f683a 100644 --- a/app/src/main/kotlin/com/google/samples/apps/nowinandroid/navigation/TopLevelDestination.kt +++ b/app/src/main/kotlin/com/google/samples/apps/nowinandroid/navigation/TopLevelDestination.kt @@ -19,9 +19,9 @@ package com.google.samples.apps.nowinandroid.navigation import androidx.compose.ui.graphics.vector.ImageVector import com.google.samples.apps.nowinandroid.R import com.google.samples.apps.nowinandroid.core.designsystem.icon.NiaIcons -import com.google.samples.apps.nowinandroid.feature.bookmarks.navigation.BookmarksDestination -import com.google.samples.apps.nowinandroid.feature.foryou.navigation.ForYouDestination -import com.google.samples.apps.nowinandroid.feature.interests.navigation.InterestsDestination +import com.google.samples.apps.nowinandroid.feature.bookmarks.navigation.BookmarksRoute +import com.google.samples.apps.nowinandroid.feature.foryou.navigation.ForYouRoute +import com.google.samples.apps.nowinandroid.feature.interests.navigation.InterestsRoute import kotlin.reflect.KClass import com.google.samples.apps.nowinandroid.feature.bookmarks.R as bookmarksR import com.google.samples.apps.nowinandroid.feature.foryou.R as forYouR @@ -44,20 +44,20 @@ enum class TopLevelDestination( unselectedIcon = NiaIcons.UpcomingBorder, iconTextId = forYouR.string.feature_foryou_title, titleTextId = R.string.app_name, - route = ForYouDestination::class, + route = ForYouRoute::class, ), BOOKMARKS( selectedIcon = NiaIcons.Bookmarks, unselectedIcon = NiaIcons.BookmarksBorder, iconTextId = bookmarksR.string.feature_bookmarks_title, titleTextId = bookmarksR.string.feature_bookmarks_title, - route = BookmarksDestination::class, + route = BookmarksRoute::class, ), INTERESTS( selectedIcon = NiaIcons.Grid3x3, unselectedIcon = NiaIcons.Grid3x3, iconTextId = searchR.string.feature_search_interests, titleTextId = searchR.string.feature_search_interests, - route = InterestsDestination::class, + route = InterestsRoute::class, ), } 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 3fd213fe7..300d67cfd 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 @@ -35,11 +35,11 @@ import com.google.samples.apps.nowinandroid.core.data.repository.UserNewsResourc import com.google.samples.apps.nowinandroid.core.data.util.NetworkMonitor import com.google.samples.apps.nowinandroid.core.data.util.TimeZoneMonitor import com.google.samples.apps.nowinandroid.core.ui.TrackDisposableJank -import com.google.samples.apps.nowinandroid.feature.bookmarks.navigation.BookmarksDestination +import com.google.samples.apps.nowinandroid.feature.bookmarks.navigation.BookmarksRoute import com.google.samples.apps.nowinandroid.feature.bookmarks.navigation.navigateToBookmarks -import com.google.samples.apps.nowinandroid.feature.foryou.navigation.ForYouDestination +import com.google.samples.apps.nowinandroid.feature.foryou.navigation.ForYouRoute import com.google.samples.apps.nowinandroid.feature.foryou.navigation.navigateToForYou -import com.google.samples.apps.nowinandroid.feature.interests.navigation.InterestsDestination +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.navigateToSearch import com.google.samples.apps.nowinandroid.navigation.TopLevelDestination @@ -99,9 +99,9 @@ class NiaAppState( val currentTopLevelDestination: TopLevelDestination? @Composable get() { with(currentDestination) { - if (this?.hasRoute() == true) return FOR_YOU - if (this?.hasRoute() == true) return BOOKMARKS - if (this?.hasRoute() == true) return INTERESTS + if (this?.hasRoute() == true) return FOR_YOU + if (this?.hasRoute() == true) return BOOKMARKS + if (this?.hasRoute() == true) return INTERESTS } return null } diff --git a/app/src/main/kotlin/com/google/samples/apps/nowinandroid/ui/interests2pane/Interests2PaneViewModel.kt b/app/src/main/kotlin/com/google/samples/apps/nowinandroid/ui/interests2pane/Interests2PaneViewModel.kt index 5bb22f057..22e3c343b 100644 --- a/app/src/main/kotlin/com/google/samples/apps/nowinandroid/ui/interests2pane/Interests2PaneViewModel.kt +++ b/app/src/main/kotlin/com/google/samples/apps/nowinandroid/ui/interests2pane/Interests2PaneViewModel.kt @@ -19,7 +19,7 @@ package com.google.samples.apps.nowinandroid.ui.interests2pane import androidx.lifecycle.SavedStateHandle import androidx.lifecycle.ViewModel import androidx.navigation.toRoute -import com.google.samples.apps.nowinandroid.feature.interests.navigation.InterestsDestination +import com.google.samples.apps.nowinandroid.feature.interests.navigation.InterestsRoute import com.google.samples.apps.nowinandroid.feature.interests.navigation.TOPIC_ID_KEY import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.flow.StateFlow @@ -32,10 +32,10 @@ class Interests2PaneViewModel @Inject constructor( private val savedStateHandle: SavedStateHandle, ) : ViewModel() { - val destination = savedStateHandle.toRoute() + val route = savedStateHandle.toRoute() val selectedTopicId: StateFlow = savedStateHandle.getStateFlow( key = TOPIC_ID_KEY, - initialValue = destination.initialTopicId, + initialValue = route.initialTopicId, ) fun onTopicClick(topicId: String?) { diff --git a/app/src/main/kotlin/com/google/samples/apps/nowinandroid/ui/interests2pane/InterestsListDetailScreen.kt b/app/src/main/kotlin/com/google/samples/apps/nowinandroid/ui/interests2pane/InterestsListDetailScreen.kt index 3ad2c6162..1b5913b15 100644 --- a/app/src/main/kotlin/com/google/samples/apps/nowinandroid/ui/interests2pane/InterestsListDetailScreen.kt +++ b/app/src/main/kotlin/com/google/samples/apps/nowinandroid/ui/interests2pane/InterestsListDetailScreen.kt @@ -40,20 +40,20 @@ import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable import androidx.navigation.compose.rememberNavController import com.google.samples.apps.nowinandroid.feature.interests.InterestsRoute -import com.google.samples.apps.nowinandroid.feature.interests.navigation.InterestsDestination +import com.google.samples.apps.nowinandroid.feature.interests.navigation.InterestsRoute import com.google.samples.apps.nowinandroid.feature.topic.TopicDetailPlaceholder -import com.google.samples.apps.nowinandroid.feature.topic.navigation.TopicDestination +import com.google.samples.apps.nowinandroid.feature.topic.navigation.TopicRoute import com.google.samples.apps.nowinandroid.feature.topic.navigation.navigateToTopic import com.google.samples.apps.nowinandroid.feature.topic.navigation.topicScreen import kotlinx.serialization.Serializable import java.util.UUID -@Serializable object TopicPlaceholderDestination +@Serializable internal object TopicPlaceholderRoute -@Serializable object DetailPaneNavHostDestination +@Serializable internal object DetailPaneNavHostRoute fun NavGraphBuilder.interestsListDetailScreen() { - composable { + composable { InterestsListDetailScreen() } } @@ -87,9 +87,9 @@ internal fun InterestsListDetailScreen( listDetailNavigator.navigateBack() } - var nestedNavHostStartDestination by remember { - val destination = selectedTopicId?.let { TopicDestination(id = it) } ?: TopicPlaceholderDestination - mutableStateOf(destination) + var nestedNavHostStartRoute by remember { + val route = selectedTopicId?.let { TopicRoute(id = it) } ?: TopicPlaceholderRoute + mutableStateOf(route) } var nestedNavKey by rememberSaveable( stateSaver = Saver({ it.toString() }, UUID::fromString), @@ -106,11 +106,11 @@ internal fun InterestsListDetailScreen( // If the detail pane was visible, then use the nestedNavController navigate call // directly nestedNavController.navigateToTopic(topicId) { - popUpTo() + popUpTo() } } else { // Otherwise, recreate the NavHost entirely, and start at the new destination - nestedNavHostStartDestination = TopicDestination(id = topicId) + nestedNavHostStartRoute = TopicRoute(id = topicId) nestedNavKey = UUID.randomUUID() } listDetailNavigator.navigateTo(ListDetailPaneScaffoldRole.Detail) @@ -132,15 +132,15 @@ internal fun InterestsListDetailScreen( key(nestedNavKey) { NavHost( navController = nestedNavController, - startDestination = nestedNavHostStartDestination, - route = DetailPaneNavHostDestination::class, + startDestination = nestedNavHostStartRoute, + route = DetailPaneNavHostRoute::class, ) { topicScreen( showBackButton = !listDetailNavigator.isListPaneVisible(), onBackClick = listDetailNavigator::navigateBack, onTopicClick = ::onTopicClickShowDetailPane, ) - composable { + composable { TopicDetailPlaceholder() } } diff --git a/feature/bookmarks/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/bookmarks/navigation/BookmarksNavigation.kt b/feature/bookmarks/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/bookmarks/navigation/BookmarksNavigation.kt index 1e044ec74..ea8d525ab 100644 --- a/feature/bookmarks/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/bookmarks/navigation/BookmarksNavigation.kt +++ b/feature/bookmarks/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/bookmarks/navigation/BookmarksNavigation.kt @@ -23,16 +23,16 @@ import androidx.navigation.compose.composable import com.google.samples.apps.nowinandroid.feature.bookmarks.BookmarksRoute import kotlinx.serialization.Serializable -@Serializable object BookmarksDestination +@Serializable object BookmarksRoute fun NavController.navigateToBookmarks(navOptions: NavOptions) = - navigate(route = BookmarksDestination, navOptions) + navigate(route = BookmarksRoute, navOptions) fun NavGraphBuilder.bookmarksScreen( onTopicClick: (String) -> Unit, onShowSnackbar: suspend (String, String?) -> Boolean, ) { - composable { + composable { BookmarksRoute(onTopicClick, onShowSnackbar) } } diff --git a/feature/foryou/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/navigation/ForYouNavigation.kt b/feature/foryou/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/navigation/ForYouNavigation.kt index e0874bbf8..11bc8a251 100644 --- a/feature/foryou/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/navigation/ForYouNavigation.kt +++ b/feature/foryou/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/navigation/ForYouNavigation.kt @@ -30,14 +30,14 @@ const val LINKED_NEWS_RESOURCE_ID = "linkedNewsResourceId" private const val DEEP_LINK_BASE_PATH = "$DEEP_LINK_SCHEME_AND_HOST/$FOR_YOU_PATH" -@Serializable data class ForYouDestination(val linkedNewsResourceId: String? = null) +@Serializable data class ForYouRoute(val linkedNewsResourceId: String? = null) -fun NavController.navigateToForYou(navOptions: NavOptions) = navigate(route = ForYouDestination(), navOptions) +fun NavController.navigateToForYou(navOptions: NavOptions) = navigate(route = ForYouRoute(), navOptions) fun NavGraphBuilder.forYouScreen(onTopicClick: (String) -> Unit) { - composable( + composable( deepLinks = listOf( - navDeepLink(basePath = DEEP_LINK_BASE_PATH), + navDeepLink(basePath = DEEP_LINK_BASE_PATH), ), ) { ForYouRoute(onTopicClick) diff --git a/feature/interests/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/interests/InterestsViewModel.kt b/feature/interests/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/interests/InterestsViewModel.kt index 2cc81b649..0ffa3a473 100644 --- a/feature/interests/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/interests/InterestsViewModel.kt +++ b/feature/interests/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/interests/InterestsViewModel.kt @@ -24,7 +24,7 @@ import com.google.samples.apps.nowinandroid.core.data.repository.UserDataReposit import com.google.samples.apps.nowinandroid.core.domain.GetFollowableTopicsUseCase import com.google.samples.apps.nowinandroid.core.domain.TopicSortField import com.google.samples.apps.nowinandroid.core.model.data.FollowableTopic -import com.google.samples.apps.nowinandroid.feature.interests.navigation.InterestsDestination +import com.google.samples.apps.nowinandroid.feature.interests.navigation.InterestsRoute import com.google.samples.apps.nowinandroid.feature.interests.navigation.TOPIC_ID_KEY import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.flow.SharingStarted @@ -41,10 +41,10 @@ class InterestsViewModel @Inject constructor( getFollowableTopics: GetFollowableTopicsUseCase, ) : ViewModel() { - private val interestsDestination: InterestsDestination = savedStateHandle.toRoute() + private val interestsRoute: InterestsRoute = savedStateHandle.toRoute() private val selectedTopicId = savedStateHandle.getStateFlow( key = TOPIC_ID_KEY, - initialValue = interestsDestination.initialTopicId, + initialValue = interestsRoute.initialTopicId, ) val uiState: StateFlow = combine( diff --git a/feature/interests/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/interests/navigation/InterestsNavigation.kt b/feature/interests/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/interests/navigation/InterestsNavigation.kt index 89950f09a..b0a85a5be 100644 --- a/feature/interests/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/interests/navigation/InterestsNavigation.kt +++ b/feature/interests/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/interests/navigation/InterestsNavigation.kt @@ -22,7 +22,7 @@ import kotlinx.serialization.Serializable const val TOPIC_ID_KEY = "topicId" -@Serializable data class InterestsDestination( +@Serializable data class InterestsRoute( // The ID of the topic which will be initially selected at this destination val initialTopicId: String?, ) @@ -31,5 +31,5 @@ fun NavController.navigateToInterests( initialTopicId: String? = null, navOptions: NavOptions? = null, ) { - navigate(route = InterestsDestination(initialTopicId), navOptions) + navigate(route = InterestsRoute(initialTopicId), navOptions) } diff --git a/feature/interests/src/test/kotlin/com/google/samples/apps/nowinandroid/interests/InterestsViewModelTest.kt b/feature/interests/src/test/kotlin/com/google/samples/apps/nowinandroid/interests/InterestsViewModelTest.kt index 6ecbc2dda..eddc9ff7c 100644 --- a/feature/interests/src/test/kotlin/com/google/samples/apps/nowinandroid/interests/InterestsViewModelTest.kt +++ b/feature/interests/src/test/kotlin/com/google/samples/apps/nowinandroid/interests/InterestsViewModelTest.kt @@ -26,7 +26,7 @@ import com.google.samples.apps.nowinandroid.core.testing.repository.TestUserData import com.google.samples.apps.nowinandroid.core.testing.util.MainDispatcherRule import com.google.samples.apps.nowinandroid.feature.interests.InterestsUiState import com.google.samples.apps.nowinandroid.feature.interests.InterestsViewModel -import com.google.samples.apps.nowinandroid.feature.interests.navigation.InterestsDestination +import com.google.samples.apps.nowinandroid.feature.interests.navigation.InterestsRoute import kotlinx.coroutines.flow.collect import kotlinx.coroutines.launch import kotlinx.coroutines.test.UnconfinedTestDispatcher @@ -59,7 +59,7 @@ class InterestsViewModelTest { // TODO: This line causes tests to fail since it introduces an Android dependency // see b/340966212 for more information savedStateHandle = SavedStateHandle( - route = InterestsDestination(initialTopicId = testInputTopics[0].topic.id), + route = InterestsRoute(initialTopicId = testInputTopics[0].topic.id), ), userDataRepository = userDataRepository, getFollowableTopics = getFollowableTopicsUseCase, diff --git a/feature/topic/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/topic/TopicViewModel.kt b/feature/topic/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/topic/TopicViewModel.kt index 3a487be79..ba8baad14 100644 --- a/feature/topic/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/topic/TopicViewModel.kt +++ b/feature/topic/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/topic/TopicViewModel.kt @@ -29,7 +29,7 @@ import com.google.samples.apps.nowinandroid.core.model.data.Topic import com.google.samples.apps.nowinandroid.core.model.data.UserNewsResource import com.google.samples.apps.nowinandroid.core.result.Result import com.google.samples.apps.nowinandroid.core.result.asResult -import com.google.samples.apps.nowinandroid.feature.topic.navigation.TopicDestination +import com.google.samples.apps.nowinandroid.feature.topic.navigation.TopicRoute import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.SharingStarted @@ -48,7 +48,7 @@ class TopicViewModel @Inject constructor( userNewsResourceRepository: UserNewsResourceRepository, ) : ViewModel() { - val topicId = savedStateHandle.toRoute().id + val topicId = savedStateHandle.toRoute().id val topicUiState: StateFlow = topicUiState( topicId = topicId, diff --git a/feature/topic/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/topic/navigation/TopicNavigation.kt b/feature/topic/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/topic/navigation/TopicNavigation.kt index c116c6432..fabb82b10 100644 --- a/feature/topic/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/topic/navigation/TopicNavigation.kt +++ b/feature/topic/src/main/kotlin/com/google/samples/apps/nowinandroid/feature/topic/navigation/TopicNavigation.kt @@ -23,10 +23,10 @@ import androidx.navigation.compose.composable import com.google.samples.apps.nowinandroid.feature.topic.TopicScreen import kotlinx.serialization.Serializable -@Serializable data class TopicDestination(val id: String) +@Serializable data class TopicRoute(val id: String) fun NavController.navigateToTopic(topicId: String, navOptions: NavOptionsBuilder.() -> Unit = {}) { - navigate(route = TopicDestination(topicId)) { + navigate(route = TopicRoute(topicId)) { navOptions() } } @@ -36,7 +36,7 @@ fun NavGraphBuilder.topicScreen( onBackClick: () -> Unit, onTopicClick: (String) -> Unit, ) { - composable { + composable { TopicScreen( showBackButton = showBackButton, onBackClick = onBackClick,