Skip to content

Commit

Permalink
Merge pull request #1063 from lihenggui/safe-nav
Browse files Browse the repository at this point in the history
Migrate to Type safety navigation
  • Loading branch information
lihenggui authored Oct 18, 2024
2 parents 677d679 + 5b05eec commit 474cab6
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ class AndroidFeatureConventionPlugin : Plugin<Project> {
apply("blocker.android.library")
apply("blocker.android.hilt")
apply("io.github.takahirom.roborazzi")
apply("org.jetbrains.kotlin.plugin.serialization")
}
extensions.configure<LibraryExtension> {
testOptions.animationsDisabled = true
Expand All @@ -41,7 +42,9 @@ class AndroidFeatureConventionPlugin : Plugin<Project> {
add("implementation", libs.findLibrary("androidx.hilt.navigation.compose").get())
add("implementation", libs.findLibrary("androidx.lifecycle.runtimeCompose").get())
add("implementation", libs.findLibrary("androidx.lifecycle.viewModelCompose").get())
add("implementation", libs.findLibrary("androidx.navigation.compose").get())
add("implementation", libs.findLibrary("androidx.tracing.ktx").get())
add("implementation", libs.findLibrary("kotlinx.serialization.json").get())

add("testImplementation", project(":core:screenshot-testing"))
add("androidTestImplementation", libs.findBundle("androidx.compose.ui.test").get())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,18 +22,20 @@ import androidx.navigation.NavOptions
import androidx.navigation.compose.composable
import com.merxury.blocker.core.designsystem.component.SnackbarHostState
import com.merxury.blocker.feature.helpandfeedback.SupportAndFeedbackRoute
import kotlinx.serialization.Serializable

const val SUPPORT_AND_FEEDBACK_ROUTE = "support_and_feedback_route"
@Serializable
data object SupportAndFeedbackRoute

fun NavController.navigateToSupportAndFeedback(navOptions: NavOptions? = null) =
navigate(SUPPORT_AND_FEEDBACK_ROUTE, navOptions)
navigate(route = SupportAndFeedbackRoute, navOptions)

fun NavGraphBuilder.supportAndFeedbackScreen(
onBackClick: () -> Unit,
navigateToLicenses: () -> Unit,
snackbarHostState: SnackbarHostState,
) {
composable(route = SUPPORT_AND_FEEDBACK_ROUTE) {
composable<SupportAndFeedbackRoute> {
SupportAndFeedbackRoute(
onNavigationClick = onBackClick,
navigateToLicenses = navigateToLicenses,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,18 +21,18 @@ import androidx.navigation.NavGraphBuilder
import androidx.navigation.NavOptions
import androidx.navigation.compose.composable
import com.merxury.blocker.feature.licenses.LicensesRoute
import kotlinx.serialization.Serializable

const val LICENSES_ROUTE = "licenses_route"
@Serializable
data object LicensesRoute

fun NavController.navigateToLicenses(navOptions: NavOptions? = null) =
navigate(LICENSES_ROUTE, navOptions)
navigate(route = LicensesRoute, navOptions)

fun NavGraphBuilder.licensesScreen(
onBackClick: () -> Unit,
) {
composable(
route = LICENSES_ROUTE,
) {
composable<LicensesRoute> {
LicensesRoute(
onNavigationClick = onBackClick,
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,19 +22,19 @@ import androidx.navigation.NavOptions
import androidx.navigation.compose.composable
import com.merxury.blocker.core.designsystem.component.SnackbarHostState
import com.merxury.blocker.feature.settings.SettingsRoute
import kotlinx.serialization.Serializable

const val SETTINGS_ROUTE = "settings_route"
@Serializable
data object SettingsRoute

fun NavController.navigateToSettings(navOptions: NavOptions? = null) =
navigate(SETTINGS_ROUTE, navOptions)
navigate(route = SettingsRoute, navOptions)

fun NavGraphBuilder.settingsScreen(
onBackClick: () -> Unit,
snackbarHostState: SnackbarHostState,
) {
composable(
route = SETTINGS_ROUTE,
) {
composable<SettingsRoute> {
SettingsRoute(
onNavigationClick = onBackClick,
snackbarHostState = snackbarHostState,
Expand Down

0 comments on commit 474cab6

Please sign in to comment.