Skip to content
Prev Previous commit
Next Next commit
Migrate interests feature
  • Loading branch information
dturner committed Jul 11, 2025
commit e196be9ad0afd545e2dfc88f76a36383e6498683
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ fun NiaNavHost(
}
composable<BookmarksRoute> {}
composable<SearchRoute> {}
interestsListDetailScreen()
composable<InterestsRoute>{}
}
}
},
Expand All @@ -96,6 +96,7 @@ fun NiaNavHost(
onInterestsClick = { appState.navigateToTopLevelDestination(INTERESTS) },
onTopicClick = navController::navigateToInterests,
)
interestsListDetailScreen()
},
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ 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.api.navigation.BookmarksRoute
import com.google.samples.apps.nowinandroid.feature.foryou.navigation.navigateToForYou
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.navigateToSearch
Expand All @@ -47,6 +48,7 @@ import com.google.samples.apps.nowinandroid.navigation.TopLevelDestination
import com.google.samples.apps.nowinandroid.navigation.TopLevelDestination.BOOKMARKS
import com.google.samples.apps.nowinandroid.navigation.TopLevelDestination.FOR_YOU
import com.google.samples.apps.nowinandroid.navigation.TopLevelDestination.INTERESTS
import com.google.samples.apps.nowinandroid.ui.interests2pane.interestsListDetailScreen
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.Job
Expand Down Expand Up @@ -217,7 +219,8 @@ class Nav3NavigatorSimple(val navController: NavHostController){
private val migratedRoutes = listOf(
BookmarksRoute::class,
TopicRoute::class,
SearchRoute::class
SearchRoute::class,
InterestsRoute::class,
).associateBy { it.qualifiedName }

// TODO: We are using Dispatchers.Main so that we can access SavedStateHandle in toRoute,
Expand All @@ -235,18 +238,16 @@ class Nav3NavigatorSimple(val navController: NavHostController){
if (backStack.isNotEmpty()){
clear()
val entriesToAdd = nav2BackStack.mapNotNull { entry ->

val className = entry.destination.route?.substringBefore('/')
println("Evaluating: $className")
// Ignore nav graph root entries
if (entry.destination::class.qualifiedName == "androidx.navigation.compose.ComposeNavGraphNavigator.ComposeNavGraph"){
null
} else {
when (className) {
BookmarksRoute::class.qualifiedName -> entry.toRoute<BookmarksRoute>()
TopicRoute::class.qualifiedName -> entry.toRoute<TopicRoute>()
SearchRoute::class.qualifiedName -> entry.toRoute<SearchRoute>()
else -> entry
with(entry.destination) {
if (hasRoute<BookmarksRoute>()) { entry.toRoute<BookmarksRoute>() }
else if (hasRoute<TopicRoute>()) { entry.toRoute<TopicRoute>() }
else if (hasRoute<SearchRoute>()) { entry.toRoute<SearchRoute>() }
else if (hasRoute<InterestsRoute>()) { entry.toRoute<InterestsRoute>() }
else { entry }
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,8 @@ import androidx.compose.ui.layout.layout
import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.navigation.NavGraphBuilder
import androidx.navigation.compose.composable
import androidx.navigation3.runtime.EntryProviderBuilder
import androidx.navigation3.runtime.entry
import com.google.samples.apps.nowinandroid.feature.interests.InterestsRoute
import com.google.samples.apps.nowinandroid.feature.interests.navigation.InterestsRoute
import com.google.samples.apps.nowinandroid.feature.topic.TopicDetailPlaceholder
Expand All @@ -64,8 +64,8 @@ import kotlin.math.max

@Serializable internal object TopicPlaceholderRoute

fun NavGraphBuilder.interestsListDetailScreen() {
composable<InterestsRoute> {
fun EntryProviderBuilder<Any>.interestsListDetailScreen() {
entry<InterestsRoute> {
InterestsListDetailScreen()
}
}
Expand Down
1 change: 1 addition & 0 deletions feature/interests/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ android {
dependencies {
implementation(projects.core.data)
implementation(projects.core.domain)
implementation(projects.core.navigation)

testImplementation(projects.core.testing)
testImplementation(libs.robolectric)
Expand Down