|
|
|
|
@ -1,5 +1,5 @@
|
|
|
|
|
/*
|
|
|
|
|
* Copyright 2022 The Android Open Source Project
|
|
|
|
|
* Copyright 2024 The Android Open Source Project
|
|
|
|
|
*
|
|
|
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
|
* you may not use this file except in compliance with the License.
|
|
|
|
|
@ -20,7 +20,7 @@ import androidx.compose.runtime.Composable
|
|
|
|
|
import androidx.compose.runtime.Stable
|
|
|
|
|
import androidx.compose.runtime.remember
|
|
|
|
|
import androidx.compose.runtime.rememberCoroutineScope
|
|
|
|
|
import androidx.navigation.NavController
|
|
|
|
|
import androidx.compose.ui.util.trace
|
|
|
|
|
import androidx.navigation.NavDestination
|
|
|
|
|
import androidx.navigation.NavDestination.Companion.hasRoute
|
|
|
|
|
import androidx.navigation.NavGraph.Companion.findStartDestination
|
|
|
|
|
@ -28,11 +28,9 @@ import androidx.navigation.NavHostController
|
|
|
|
|
import androidx.navigation.compose.currentBackStackEntryAsState
|
|
|
|
|
import androidx.navigation.compose.rememberNavController
|
|
|
|
|
import androidx.navigation.navOptions
|
|
|
|
|
import androidx.tracing.trace
|
|
|
|
|
import com.google.samples.apps.nowinandroid.core.data.repository.UserNewsResourceRepository
|
|
|
|
|
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.navigateToBookmarks
|
|
|
|
|
import com.google.samples.apps.nowinandroid.feature.foryou.navigation.navigateToForYou
|
|
|
|
|
import com.google.samples.apps.nowinandroid.feature.interests.navigation.navigateToInterests
|
|
|
|
|
@ -57,7 +55,7 @@ fun rememberNiaAppState(
|
|
|
|
|
coroutineScope: CoroutineScope = rememberCoroutineScope(),
|
|
|
|
|
navController: NavHostController = rememberNavController(),
|
|
|
|
|
): NiaAppState {
|
|
|
|
|
NavigationTrackingSideEffect(navController)
|
|
|
|
|
// NavigationTrackingSideEffect(navController)
|
|
|
|
|
return remember(
|
|
|
|
|
navController,
|
|
|
|
|
coroutineScope,
|
|
|
|
|
@ -145,7 +143,7 @@ class NiaAppState(
|
|
|
|
|
// Pop up to the start destination of the graph to
|
|
|
|
|
// avoid building up a large stack of destinations
|
|
|
|
|
// on the back stack as users select items
|
|
|
|
|
popUpTo(navController.graph.findStartDestination().id) {
|
|
|
|
|
popUpTo(navController.graph.findStartDestination()) {
|
|
|
|
|
saveState = true
|
|
|
|
|
}
|
|
|
|
|
// Avoid multiple copies of the same destination when
|
|
|
|
|
@ -169,17 +167,17 @@ class NiaAppState(
|
|
|
|
|
/**
|
|
|
|
|
* Stores information about navigation events to be used with JankStats
|
|
|
|
|
*/
|
|
|
|
|
@Composable
|
|
|
|
|
private fun NavigationTrackingSideEffect(navController: NavHostController) {
|
|
|
|
|
TrackDisposableJank(navController) { metricsHolder ->
|
|
|
|
|
val listener = NavController.OnDestinationChangedListener { _, destination, _ ->
|
|
|
|
|
metricsHolder.state?.putState("Navigation", destination.route.toString())
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
navController.addOnDestinationChangedListener(listener)
|
|
|
|
|
|
|
|
|
|
onDispose {
|
|
|
|
|
navController.removeOnDestinationChangedListener(listener)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//@Composable
|
|
|
|
|
//private fun NavigationTrackingSideEffect(navController: NavHostController) {
|
|
|
|
|
// TrackDisposableJank(navController) { metricsHolder ->
|
|
|
|
|
// val listener = NavController.OnDestinationChangedListener { _, destination, _ ->
|
|
|
|
|
// metricsHolder.state?.putState("Navigation", destination.route.toString())
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// navController.addOnDestinationChangedListener(listener)
|
|
|
|
|
//
|
|
|
|
|
// onDispose {
|
|
|
|
|
// navController.removeOnDestinationChangedListener(listener)
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
//}
|