Finish refactor of api/impl

dt/nav3-c
Don Turner 2 months ago
parent ba07375de1
commit 6ebf665c09

@ -16,19 +16,18 @@
package com.google.samples.apps.nowinandroid.navigation
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable
import androidx.navigation3.runtime.NavEntry
import androidx.navigation3.runtime.entry
import androidx.navigation3.runtime.entryProvider
import androidx.navigation3.ui.NavDisplay
import com.google.samples.apps.nowinandroid.feature.bookmarks.impl.BookmarksScreenStateful
import com.google.samples.apps.nowinandroid.feature.bookmarks.impl.navigation.BookmarksRoute
import com.google.samples.apps.nowinandroid.feature.bookmarks.api.navigation.BookmarksRoute
import com.google.samples.apps.nowinandroid.feature.bookmarks.impl.navigation.bookmarksScreen
import com.google.samples.apps.nowinandroid.feature.foryou.navigation.ForYouBaseRoute
import com.google.samples.apps.nowinandroid.feature.foryou.navigation.forYouSection
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.searchScreen
import com.google.samples.apps.nowinandroid.feature.topic.navigation.navigateToTopic
@ -51,9 +50,10 @@ fun NiaNavHost(
modifier: Modifier = Modifier,
) {
val navController = appState.navController
val nav3Navigator = appState.nav3Navigator
NavDisplay(
backStack = appState.nav3Navigator.backStack,
onBack = { appState.nav3Navigator.goBack() },
backStack = nav3Navigator.backStack,
onBack = { nav3Navigator.goBack() },
entryProvider = entryProvider(
fallback = { key ->
println("$key not found, using fallback entry")
@ -72,9 +72,7 @@ fun NiaNavHost(
onTopicClick = navController::navigateToTopic,
)
}
composable<BookmarksRoute> {
Text("Legacy BookmarksRoute")
}
composable<BookmarksRoute> {}
searchScreen(
onBackClick = navController::popBackStack,
onInterestsClick = { appState.navigateToTopLevelDestination(INTERESTS) },
@ -85,12 +83,12 @@ fun NiaNavHost(
}
},
) {
entry<BookmarksRoute>{
BookmarksScreenStateful(
{ it: String -> navController.navigateToInterests(it) },
onShowSnackbar
bookmarksScreen(
onTopicClick = { it: String ->
nav3Navigator.goTo(route = InterestsRoute(it))
},
onShowSnackbar = onShowSnackbar
)
}
},
)
}

@ -20,7 +20,7 @@ import androidx.annotation.StringRes
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.impl.navigation.BookmarksRoute
import com.google.samples.apps.nowinandroid.feature.bookmarks.api.navigation.BookmarksRoute
import com.google.samples.apps.nowinandroid.feature.foryou.navigation.ForYouBaseRoute
import com.google.samples.apps.nowinandroid.feature.foryou.navigation.ForYouRoute
import com.google.samples.apps.nowinandroid.feature.interests.navigation.InterestsRoute

@ -37,8 +37,7 @@ 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.impl.navigation.BookmarksRoute
import com.google.samples.apps.nowinandroid.feature.bookmarks.impl.navigation.navigateToBookmarks
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.navigateToInterests
import com.google.samples.apps.nowinandroid.feature.search.navigation.navigateToSearch
@ -184,7 +183,7 @@ class NiaAppState(
when (topLevelDestination) {
FOR_YOU -> navController.navigateToForYou(topLevelNavOptions)
BOOKMARKS -> navController.navigateToBookmarks(topLevelNavOptions)
BOOKMARKS -> nav3Navigator.goTo(route = BookmarksRoute, topLevelNavOptions)
INTERESTS -> navController.navigateToInterests(null, topLevelNavOptions)
}
}

@ -16,6 +16,6 @@
package com.google.samples.apps.nowinandroid.feature.bookmarks.api.navigation
import androidx.navigation3.runtime.NavKey
import kotlinx.serialization.Serializable
@Serializable object BookmarksRoute

@ -25,6 +25,7 @@ android {
}
dependencies {
implementation(projects.feature.bookmarks.api)
implementation(projects.core.data)
implementation(projects.core.navigation)
testImplementation(projects.core.testing)

@ -16,23 +16,16 @@
package com.google.samples.apps.nowinandroid.feature.bookmarks.impl.navigation
import androidx.navigation.NavController
import androidx.navigation.NavGraphBuilder
import androidx.navigation.NavOptions
import androidx.navigation.compose.composable
import androidx.navigation3.runtime.EntryProviderBuilder
import androidx.navigation3.runtime.entry
import com.google.samples.apps.nowinandroid.feature.bookmarks.impl.BookmarksScreenStateful
import kotlinx.serialization.Serializable
import com.google.samples.apps.nowinandroid.feature.bookmarks.api.navigation.BookmarksRoute
@Serializable object BookmarksRoute
fun NavController.navigateToBookmarks(navOptions: NavOptions) =
navigate(route = BookmarksRoute, navOptions)
fun NavGraphBuilder.bookmarksScreen(
fun EntryProviderBuilder<Any>.bookmarksScreen(
onTopicClick: (String) -> Unit,
onShowSnackbar: suspend (String, String?) -> Boolean,
) {
composable<BookmarksRoute> {
entry<BookmarksRoute> {
BookmarksScreenStateful(onTopicClick, onShowSnackbar)
}
}

Loading…
Cancel
Save