WIP remove DI 2

pull/2003/head
Don Turner 2 weeks ago
parent c9bba49957
commit 386d1a0a16

@ -78,18 +78,9 @@ class MainActivity : ComponentActivity() {
@Inject @Inject
lateinit var userNewsResourceRepository: UserNewsResourceRepository lateinit var userNewsResourceRepository: UserNewsResourceRepository
/*@Inject
lateinit var entryProviderBuilders: Set<@JvmSuppressWildcards EntryProviderScope<NavKey>.() -> Unit>
*/
/*@Inject
lateinit var niaNavigator: NiaNavigator*/
private val viewModel: MainActivityViewModel by viewModels() private val viewModel: MainActivityViewModel by viewModels()
// TODO: This isn't used
//private val backStackViewModel: NiaBackStackViewModel by viewModels()
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
val splashScreen = installSplashScreen() val splashScreen = installSplashScreen()
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
@ -153,7 +144,6 @@ class MainActivity : ComponentActivity() {
networkMonitor = networkMonitor, networkMonitor = networkMonitor,
userNewsResourceRepository = userNewsResourceRepository, userNewsResourceRepository = userNewsResourceRepository,
timeZoneMonitor = timeZoneMonitor, timeZoneMonitor = timeZoneMonitor,
//niaNavigator = niaNavigator,
) )
val currentTimeZone by appState.currentTimeZone.collectAsStateWithLifecycle() val currentTimeZone by appState.currentTimeZone.collectAsStateWithLifecycle()
@ -167,9 +157,7 @@ class MainActivity : ComponentActivity() {
androidTheme = themeSettings.androidTheme, androidTheme = themeSettings.androidTheme,
disableDynamicTheming = themeSettings.disableDynamicTheming, disableDynamicTheming = themeSettings.disableDynamicTheming,
) { ) {
NiaApp( NiaApp(appState)
appState
)
} }
} }
} }

@ -16,18 +16,6 @@
package com.google.samples.apps.nowinandroid.di package com.google.samples.apps.nowinandroid.di
import com.google.samples.apps.nowinandroid.core.navigation.NiaNavKey
import com.google.samples.apps.nowinandroid.core.navigation.NiaNavigationState
import com.google.samples.apps.nowinandroid.navigation.TopLevelDestination
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.components.SingletonComponent
import kotlinx.serialization.modules.PolymorphicModuleBuilder
import kotlinx.serialization.modules.SerializersModule
import kotlinx.serialization.modules.polymorphic
import javax.inject.Singleton
// TODO: Rename to `NiaNavigationStateProvider` // TODO: Rename to `NiaNavigationStateProvider`
// Does this even need to be injected? Can't we just instantiate it directly using `rememberNavigationState`? // Does this even need to be injected? Can't we just instantiate it directly using `rememberNavigationState`?
/* /*

@ -81,35 +81,32 @@ enum class TopLevelDestination(
internal val TopLevelDestinations = TopLevelDestination.entries.associateBy { dest -> dest.key } internal val TopLevelDestinations = TopLevelDestination.entries.associateBy { dest -> dest.key }
*/ */
val FOR_YOU = TopLevelDestination( val FOR_YOU = NavBarItem(
selectedIcon = NiaIcons.Upcoming, selectedIcon = NiaIcons.Upcoming,
unselectedIcon = NiaIcons.UpcomingBorder, unselectedIcon = NiaIcons.UpcomingBorder,
iconTextId = forYouR.string.feature_foryou_api_title, iconTextId = forYouR.string.feature_foryou_api_title,
titleTextId = R.string.app_name, titleTextId = R.string.app_name,
route = ForYouRoute::class,
key = ForYouRoute, key = ForYouRoute,
) )
val BOOKMARKS = TopLevelDestination( val BOOKMARKS = NavBarItem(
selectedIcon = NiaIcons.Bookmarks, selectedIcon = NiaIcons.Bookmarks,
unselectedIcon = NiaIcons.BookmarksBorder, unselectedIcon = NiaIcons.BookmarksBorder,
iconTextId = bookmarksR.string.feature_bookmarks_api_title, iconTextId = bookmarksR.string.feature_bookmarks_api_title,
titleTextId = bookmarksR.string.feature_bookmarks_api_title, titleTextId = bookmarksR.string.feature_bookmarks_api_title,
route = BookmarksRoute::class,
key = BookmarksRoute, key = BookmarksRoute,
) )
val INTERESTS = TopLevelDestination( val INTERESTS = NavBarItem(
selectedIcon = NiaIcons.Grid3x3, selectedIcon = NiaIcons.Grid3x3,
unselectedIcon = NiaIcons.Grid3x3, unselectedIcon = NiaIcons.Grid3x3,
iconTextId = searchR.string.feature_search_api_interests, iconTextId = searchR.string.feature_search_api_interests,
titleTextId = searchR.string.feature_search_api_interests, titleTextId = searchR.string.feature_search_api_interests,
route = InterestsRoute::class,
key = InterestsRoute(null) key = InterestsRoute(null)
) )
val TOP_LEVEL_ROUTES = mapOf<NavKey, TopLevelDestination>( val TOP_LEVEL_ROUTES = mapOf<NavKey, NavBarItem>(
ForYouRoute to FOR_YOU, ForYouRoute to FOR_YOU,
BookmarksRoute to BOOKMARKS, BookmarksRoute to BOOKMARKS,
InterestsRoute(null) to INTERESTS, InterestsRoute(null) to INTERESTS,
@ -117,8 +114,8 @@ val TOP_LEVEL_ROUTES = mapOf<NavKey, TopLevelDestination>(
/** /**
* Type for the top level destinations in the application. Contains metadata about the destination * Type for the top level navigation items in the application. Contains UI information about the
* that is used in the top app bar and common navigation UI. * current route that is used in the top app bar and common navigation UI.
* *
* @param selectedIcon The icon to be displayed in the navigation UI when this destination is * @param selectedIcon The icon to be displayed in the navigation UI when this destination is
* selected. * selected.
@ -126,15 +123,13 @@ val TOP_LEVEL_ROUTES = mapOf<NavKey, TopLevelDestination>(
* not selected. * not selected.
* @param iconTextId Text that to be displayed in the navigation UI. * @param iconTextId Text that to be displayed in the navigation UI.
* @param titleTextId Text that is displayed on the top app bar. * @param titleTextId Text that is displayed on the top app bar.
* @param route The route to use when navigating to this destination. * @param key The navigation key to use when navigating to this destination.
* @param baseRoute The highest ancestor of this destination. Defaults to [route], meaning that
* there is a single destination in that section of the app (no nested destinations). * there is a single destination in that section of the app (no nested destinations).
*/ */
data class TopLevelDestination( data class NavBarItem(
val selectedIcon: ImageVector, val selectedIcon: ImageVector,
val unselectedIcon: ImageVector, val unselectedIcon: ImageVector,
@StringRes val iconTextId: Int, @StringRes val iconTextId: Int,
@StringRes val titleTextId: Int, @StringRes val titleTextId: Int,
val route: KClass<*>,
val key: NavKey, val key: NavKey,
) )

@ -61,11 +61,9 @@ import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.semantics.testTagsAsResourceId import androidx.compose.ui.semantics.testTagsAsResourceId
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.navigation3.runtime.EntryProviderScope
import androidx.navigation3.runtime.NavKey import androidx.navigation3.runtime.NavKey
import androidx.navigation3.runtime.entryProvider import androidx.navigation3.runtime.entryProvider
import androidx.navigation3.ui.NavDisplay import androidx.navigation3.ui.NavDisplay
import com.example.nav3recipes.multiplestacks.Navigator
import com.google.samples.apps.nowinandroid.R import com.google.samples.apps.nowinandroid.R
import com.google.samples.apps.nowinandroid.core.designsystem.component.NiaBackground import com.google.samples.apps.nowinandroid.core.designsystem.component.NiaBackground
import com.google.samples.apps.nowinandroid.core.designsystem.component.NiaGradientBackground import com.google.samples.apps.nowinandroid.core.designsystem.component.NiaGradientBackground
@ -74,9 +72,8 @@ import com.google.samples.apps.nowinandroid.core.designsystem.component.NiaTopAp
import com.google.samples.apps.nowinandroid.core.designsystem.icon.NiaIcons import com.google.samples.apps.nowinandroid.core.designsystem.icon.NiaIcons
import com.google.samples.apps.nowinandroid.core.designsystem.theme.GradientColors import com.google.samples.apps.nowinandroid.core.designsystem.theme.GradientColors
import com.google.samples.apps.nowinandroid.core.designsystem.theme.LocalGradientColors import com.google.samples.apps.nowinandroid.core.designsystem.theme.LocalGradientColors
import com.google.samples.apps.nowinandroid.core.navigation.NiaNavKey import com.google.samples.apps.nowinandroid.core.navigation.simple.Navigator
import com.google.samples.apps.nowinandroid.core.navigation.simple.toEntries import com.google.samples.apps.nowinandroid.core.navigation.simple.toEntries
import com.google.samples.apps.nowinandroid.core.navigation.toEntries
import com.google.samples.apps.nowinandroid.feature.bookmarks.impl.navigation.LocalSnackbarHostState import com.google.samples.apps.nowinandroid.feature.bookmarks.impl.navigation.LocalSnackbarHostState
import com.google.samples.apps.nowinandroid.feature.bookmarks.impl.navigation.bookmarksEntry import com.google.samples.apps.nowinandroid.feature.bookmarks.impl.navigation.bookmarksEntry
import com.google.samples.apps.nowinandroid.feature.foryou.impl.navigation.forYouEntry import com.google.samples.apps.nowinandroid.feature.foryou.impl.navigation.forYouEntry
@ -94,10 +91,8 @@ fun NiaApp(
appState: NiaAppState, appState: NiaAppState,
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
windowAdaptiveInfo: WindowAdaptiveInfo = currentWindowAdaptiveInfo(), windowAdaptiveInfo: WindowAdaptiveInfo = currentWindowAdaptiveInfo(),
//entryProviderBuilders: Set<EntryProviderScope<NavKey>.() -> Unit>,
) { ) {
val shouldShowGradientBackground = val shouldShowGradientBackground = appState.currentNavBarItem == FOR_YOU
appState.currentTopLevelDestination == FOR_YOU
var showSettingsDialog by rememberSaveable { mutableStateOf(false) } var showSettingsDialog by rememberSaveable { mutableStateOf(false) }
NiaBackground(modifier = modifier) { NiaBackground(modifier = modifier) {
@ -125,11 +120,12 @@ fun NiaApp(
CompositionLocalProvider(LocalSnackbarHostState provides snackbarHostState) { CompositionLocalProvider(LocalSnackbarHostState provides snackbarHostState) {
NiaApp( NiaApp(
appState = appState, appState = appState,
// TODO: Settings should be a dialog screen
showSettingsDialog = showSettingsDialog, showSettingsDialog = showSettingsDialog,
onSettingsDismissed = { showSettingsDialog = false }, onSettingsDismissed = { showSettingsDialog = false },
onTopAppBarActionClick = { showSettingsDialog = true }, onTopAppBarActionClick = { showSettingsDialog = true },
windowAdaptiveInfo = windowAdaptiveInfo, windowAdaptiveInfo = windowAdaptiveInfo,
//entryProviderBuilders = entryProviderBuilders,
) )
} }
} }
@ -148,11 +144,9 @@ internal fun NiaApp(
onTopAppBarActionClick: () -> Unit, onTopAppBarActionClick: () -> Unit,
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
windowAdaptiveInfo: WindowAdaptiveInfo = currentWindowAdaptiveInfo(), windowAdaptiveInfo: WindowAdaptiveInfo = currentWindowAdaptiveInfo(),
//entryProviderBuilders: Set<EntryProviderScope<NavKey>.() -> Unit>,
) { ) {
val unreadDestinations by appState.topLevelDestinationsWithUnreadResources val unreadDestinations by appState.topLevelDestinationsWithUnreadResources
.collectAsStateWithLifecycle() .collectAsStateWithLifecycle()
val currentTopLevelKey = appState.currentTopLevelDestination!!.key
if (showSettingsDialog) { if (showSettingsDialog) {
SettingsDialog( SettingsDialog(
@ -166,25 +160,25 @@ internal fun NiaApp(
NiaNavigationSuiteScaffold( NiaNavigationSuiteScaffold(
navigationSuiteItems = { navigationSuiteItems = {
TOP_LEVEL_ROUTES.values.forEach { destination -> TOP_LEVEL_ROUTES.forEach { (navKey, navBarItem) ->
val hasUnread = unreadDestinations.contains(destination) val hasUnread = unreadDestinations.contains(navBarItem)
val selected = destination.key == currentTopLevelKey val selected = navKey == appState.navigationState.topLevelRoute
item( item(
selected = selected, selected = selected,
onClick = { navigator.navigate(destination.key) }, onClick = { navigator.navigate(navKey) },
icon = { icon = {
Icon( Icon(
imageVector = destination.unselectedIcon, imageVector = navBarItem.unselectedIcon,
contentDescription = null, contentDescription = null,
) )
}, },
selectedIcon = { selectedIcon = {
Icon( Icon(
imageVector = destination.selectedIcon, imageVector = navBarItem.selectedIcon,
contentDescription = null, contentDescription = null,
) )
}, },
label = { Text(stringResource(destination.iconTextId)) }, label = { Text(stringResource(navBarItem.iconTextId)) },
modifier = Modifier modifier = Modifier
.testTag("NiaNavItem") .testTag("NiaNavItem")
.then(if (hasUnread) Modifier.notificationDot() else Modifier), .then(if (hasUnread) Modifier.notificationDot() else Modifier),
@ -223,7 +217,7 @@ internal fun NiaApp(
), ),
) { ) {
// Show the top app bar on top level destinations. // Show the top app bar on top level destinations.
val destination = appState.currentTopLevelDestination val destination = appState.currentNavBarItem
var shouldShowTopAppBar = false var shouldShowTopAppBar = false
if (destination != null) { if (destination != null) {

@ -23,15 +23,13 @@ import androidx.compose.runtime.rememberCoroutineScope
import com.google.samples.apps.nowinandroid.core.data.repository.UserNewsResourceRepository 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.NetworkMonitor
import com.google.samples.apps.nowinandroid.core.data.util.TimeZoneMonitor import com.google.samples.apps.nowinandroid.core.data.util.TimeZoneMonitor
import com.google.samples.apps.nowinandroid.core.navigation.NiaNavigator
import com.google.samples.apps.nowinandroid.core.navigation.simple.NavigationState import com.google.samples.apps.nowinandroid.core.navigation.simple.NavigationState
import com.google.samples.apps.nowinandroid.core.navigation.simple.rememberNavigationState import com.google.samples.apps.nowinandroid.core.navigation.simple.rememberNavigationState
import com.google.samples.apps.nowinandroid.feature.foryou.api.navigation.ForYouRoute import com.google.samples.apps.nowinandroid.feature.foryou.api.navigation.ForYouRoute
import com.google.samples.apps.nowinandroid.navigation.BOOKMARKS import com.google.samples.apps.nowinandroid.navigation.BOOKMARKS
import com.google.samples.apps.nowinandroid.navigation.FOR_YOU import com.google.samples.apps.nowinandroid.navigation.FOR_YOU
import com.google.samples.apps.nowinandroid.navigation.TopLevelDestination
import com.google.samples.apps.nowinandroid.navigation.TOP_LEVEL_ROUTES import com.google.samples.apps.nowinandroid.navigation.TOP_LEVEL_ROUTES
//import com.google.samples.apps.nowinandroid.navigation.TopLevelDestinations import com.google.samples.apps.nowinandroid.navigation.NavBarItem
import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.StateFlow
@ -45,15 +43,14 @@ fun rememberNiaAppState(
networkMonitor: NetworkMonitor, networkMonitor: NetworkMonitor,
userNewsResourceRepository: UserNewsResourceRepository, userNewsResourceRepository: UserNewsResourceRepository,
timeZoneMonitor: TimeZoneMonitor, timeZoneMonitor: TimeZoneMonitor,
//niaNavigator: NiaNavigator,
coroutineScope: CoroutineScope = rememberCoroutineScope(), coroutineScope: CoroutineScope = rememberCoroutineScope(),
): NiaAppState { ): NiaAppState {
//NavigationTrackingSideEffect(niaNavigator)
val navigationState = rememberNavigationState(ForYouRoute, TOP_LEVEL_ROUTES.keys) val navigationState = rememberNavigationState(ForYouRoute, TOP_LEVEL_ROUTES.keys)
NavigationTrackingSideEffect(navigationState)
return remember( return remember(
//niaNavigator,
navigationState, navigationState,
coroutineScope, coroutineScope,
networkMonitor, networkMonitor,
@ -61,7 +58,6 @@ fun rememberNiaAppState(
timeZoneMonitor, timeZoneMonitor,
) { ) {
NiaAppState( NiaAppState(
//niaNavigator = niaNavigator,
navigationState = navigationState, navigationState = navigationState,
coroutineScope = coroutineScope, coroutineScope = coroutineScope,
networkMonitor = networkMonitor, networkMonitor = networkMonitor,
@ -73,19 +69,13 @@ fun rememberNiaAppState(
@Stable @Stable
class NiaAppState( class NiaAppState(
//val niaNavigator: NiaNavigator,
val navigationState: NavigationState, val navigationState: NavigationState,
coroutineScope: CoroutineScope, coroutineScope: CoroutineScope,
networkMonitor: NetworkMonitor, networkMonitor: NetworkMonitor,
userNewsResourceRepository: UserNewsResourceRepository, userNewsResourceRepository: UserNewsResourceRepository,
timeZoneMonitor: TimeZoneMonitor, timeZoneMonitor: TimeZoneMonitor,
) { ) {
/* val currentNavBarItem: NavBarItem?
val currentTopLevelDestination: TopLevelDestination?
@Composable get() = TOP_LEVEL_ROUTES[niaNavigator.navigationState.currentTopLevelKey]
*/
// TODO: It seems unnecessary to expose this as a TopLevelDestination rather than just a key
val currentTopLevelDestination: TopLevelDestination?
@Composable get() = TOP_LEVEL_ROUTES[navigationState.topLevelRoute] @Composable get() = TOP_LEVEL_ROUTES[navigationState.topLevelRoute]
val isOffline = networkMonitor.isOnline val isOffline = networkMonitor.isOnline
@ -99,7 +89,7 @@ class NiaAppState(
/** /**
* The top level destinations that have unread news resources. * The top level destinations that have unread news resources.
*/ */
val topLevelDestinationsWithUnreadResources: StateFlow<Set<TopLevelDestination>> = val topLevelDestinationsWithUnreadResources: StateFlow<Set<NavBarItem>> =
userNewsResourceRepository.observeAllForFollowedTopics() userNewsResourceRepository.observeAllForFollowedTopics()
.combine(userNewsResourceRepository.observeAllBookmarked()) { forYouNewsResources, bookmarkedNewsResources -> .combine(userNewsResourceRepository.observeAllBookmarked()) { forYouNewsResources, bookmarkedNewsResources ->
setOfNotNull( setOfNotNull(
@ -125,9 +115,9 @@ class NiaAppState(
* Stores information about navigation events to be used with JankStats * Stores information about navigation events to be used with JankStats
*/ */
// TODO: This shouldn't be commented out // TODO: NavigationState needs to expose an observable representation of its state for this to work
@Composable @Composable
private fun NavigationTrackingSideEffect(niaNavigator: NiaNavigator) { private fun NavigationTrackingSideEffect(navigationState: NavigationState) {
// TrackDisposableJank(niaNavigator) { metricsHolder -> // TrackDisposableJank(niaNavigator) { metricsHolder ->
// snapshotFlow { // snapshotFlow {
// val stack = niaNavigator.backStack.toList() // val stack = niaNavigator.backStack.toList()

@ -14,10 +14,9 @@
* limitations under the License. * limitations under the License.
*/ */
package com.example.nav3recipes.multiplestacks package com.google.samples.apps.nowinandroid.core.navigation.simple
import androidx.navigation3.runtime.NavKey import androidx.navigation3.runtime.NavKey
import com.google.samples.apps.nowinandroid.core.navigation.simple.NavigationState
/** /**
* Handles navigation events (forward and back) by updating the navigation state. * Handles navigation events (forward and back) by updating the navigation state.

@ -22,9 +22,7 @@ import androidx.compose.material3.SnackbarResult.ActionPerformed
import androidx.compose.runtime.compositionLocalOf import androidx.compose.runtime.compositionLocalOf
import androidx.navigation3.runtime.EntryProviderScope import androidx.navigation3.runtime.EntryProviderScope
import androidx.navigation3.runtime.NavKey import androidx.navigation3.runtime.NavKey
import com.example.nav3recipes.multiplestacks.Navigator import com.google.samples.apps.nowinandroid.core.navigation.simple.Navigator
import com.google.samples.apps.nowinandroid.core.navigation.NiaNavKey
import com.google.samples.apps.nowinandroid.core.navigation.NiaNavigator
import com.google.samples.apps.nowinandroid.feature.bookmarks.api.navigation.BookmarksRoute import com.google.samples.apps.nowinandroid.feature.bookmarks.api.navigation.BookmarksRoute
import com.google.samples.apps.nowinandroid.feature.bookmarks.impl.BookmarksScreen import com.google.samples.apps.nowinandroid.feature.bookmarks.impl.BookmarksScreen
import com.google.samples.apps.nowinandroid.feature.topic.api.navigation.TopicRoute import com.google.samples.apps.nowinandroid.feature.topic.api.navigation.TopicRoute

@ -18,9 +18,7 @@ package com.google.samples.apps.nowinandroid.feature.foryou.impl.navigation
import androidx.navigation3.runtime.EntryProviderScope import androidx.navigation3.runtime.EntryProviderScope
import androidx.navigation3.runtime.NavKey import androidx.navigation3.runtime.NavKey
import com.example.nav3recipes.multiplestacks.Navigator import com.google.samples.apps.nowinandroid.core.navigation.simple.Navigator
import com.google.samples.apps.nowinandroid.core.navigation.NiaNavKey
import com.google.samples.apps.nowinandroid.core.navigation.NiaNavigator
import com.google.samples.apps.nowinandroid.feature.foryou.api.navigation.ForYouRoute import com.google.samples.apps.nowinandroid.feature.foryou.api.navigation.ForYouRoute
import com.google.samples.apps.nowinandroid.feature.foryou.impl.ForYouScreen import com.google.samples.apps.nowinandroid.feature.foryou.impl.ForYouScreen
import com.google.samples.apps.nowinandroid.feature.topic.api.navigation.TopicRoute import com.google.samples.apps.nowinandroid.feature.topic.api.navigation.TopicRoute

@ -21,9 +21,7 @@ import androidx.compose.material3.adaptive.navigation3.ListDetailSceneStrategy
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
import androidx.navigation3.runtime.EntryProviderScope import androidx.navigation3.runtime.EntryProviderScope
import androidx.navigation3.runtime.NavKey import androidx.navigation3.runtime.NavKey
import com.example.nav3recipes.multiplestacks.Navigator import com.google.samples.apps.nowinandroid.core.navigation.simple.Navigator
import com.google.samples.apps.nowinandroid.core.navigation.NiaNavKey
import com.google.samples.apps.nowinandroid.core.navigation.NiaNavigator
import com.google.samples.apps.nowinandroid.feature.interests.api.navigation.InterestsRoute import com.google.samples.apps.nowinandroid.feature.interests.api.navigation.InterestsRoute
import com.google.samples.apps.nowinandroid.feature.interests.impl.InterestsDetailPlaceholder import com.google.samples.apps.nowinandroid.feature.interests.impl.InterestsDetailPlaceholder
import com.google.samples.apps.nowinandroid.feature.interests.impl.InterestsScreen import com.google.samples.apps.nowinandroid.feature.interests.impl.InterestsScreen

@ -18,13 +18,10 @@ package com.google.samples.apps.nowinandroid.feature.search.impl.navigation
import androidx.navigation3.runtime.EntryProviderScope import androidx.navigation3.runtime.EntryProviderScope
import androidx.navigation3.runtime.NavKey import androidx.navigation3.runtime.NavKey
import com.example.nav3recipes.multiplestacks.Navigator import com.google.samples.apps.nowinandroid.core.navigation.simple.Navigator
import com.google.samples.apps.nowinandroid.core.navigation.NiaNavKey
import com.google.samples.apps.nowinandroid.core.navigation.NiaNavigator
import com.google.samples.apps.nowinandroid.feature.interests.api.navigation.InterestsRoute import com.google.samples.apps.nowinandroid.feature.interests.api.navigation.InterestsRoute
import com.google.samples.apps.nowinandroid.feature.search.api.navigation.SearchRoute import com.google.samples.apps.nowinandroid.feature.search.api.navigation.SearchRoute
import com.google.samples.apps.nowinandroid.feature.search.impl.SearchScreen import com.google.samples.apps.nowinandroid.feature.search.impl.SearchScreen
import com.google.samples.apps.nowinandroid.feature.search.impl.navigation.searchEntry
import com.google.samples.apps.nowinandroid.feature.topic.api.navigation.TopicRoute import com.google.samples.apps.nowinandroid.feature.topic.api.navigation.TopicRoute
import dagger.Module import dagger.Module
import dagger.Provides import dagger.Provides

@ -21,9 +21,7 @@ import androidx.compose.material3.adaptive.navigation3.ListDetailSceneStrategy
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
import androidx.navigation3.runtime.EntryProviderScope import androidx.navigation3.runtime.EntryProviderScope
import androidx.navigation3.runtime.NavKey import androidx.navigation3.runtime.NavKey
import com.example.nav3recipes.multiplestacks.Navigator import com.google.samples.apps.nowinandroid.core.navigation.simple.Navigator
import com.google.samples.apps.nowinandroid.core.navigation.NiaNavKey
import com.google.samples.apps.nowinandroid.core.navigation.NiaNavigator
import com.google.samples.apps.nowinandroid.feature.topic.api.navigation.TopicRoute import com.google.samples.apps.nowinandroid.feature.topic.api.navigation.TopicRoute
//import com.google.samples.apps.nowinandroid.feature.topic.api.navigation.navigateToTopic //import com.google.samples.apps.nowinandroid.feature.topic.api.navigation.navigateToTopic
import com.google.samples.apps.nowinandroid.feature.topic.impl.TopicScreen import com.google.samples.apps.nowinandroid.feature.topic.impl.TopicScreen

Loading…
Cancel
Save