--- a/ui/material2/build.gradle.kts Sun Apr 27 16:19:28 2025 -0400
+++ b/ui/material2/build.gradle.kts Sun Apr 27 16:24:34 2025 -0400
@@ -26,6 +26,7 @@
kotlin("multiplatform")
alias(libs.plugins.org.jetbrains.kotlin.compose.compiler)
alias(libs.plugins.org.jetbrains.compose.multiplatform)
+ alias(libs.plugins.org.jetbrains.kotlinx.serialization)
id("com.geekorum.build.source-license-checker")
`maven-publish`
}
@@ -61,7 +62,6 @@
implementation(compose.components.resources)
implementation(libs.org.jetbrains.compose.material.icons.core)
implementation(libs.org.jetbrains.androidx.navigation.compose)
- implementation(libs.org.jetbrains.androidx.core.uri)
implementation(libs.org.jetbrains.androidx.lifecycle.viewmodel.compose)
}
--- a/ui/material2/src/commonMain/kotlin/com/geekorum/aboutoss/ui/material/OpenSourceDependenciesNavHost.kt Sun Apr 27 16:19:28 2025 -0400
+++ b/ui/material2/src/commonMain/kotlin/com/geekorum/aboutoss/ui/material/OpenSourceDependenciesNavHost.kt Sun Apr 27 16:24:34 2025 -0400
@@ -22,12 +22,20 @@
package com.geekorum.aboutoss.ui.material
import androidx.compose.runtime.Composable
-import androidx.core.uri.UriUtils
import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable
import androidx.navigation.compose.rememberNavController
-import androidx.savedstate.read
+import androidx.navigation.toRoute
import com.geekorum.aboutoss.ui.common.OpenSourceLicensesViewModel
+import kotlinx.serialization.Serializable
+
+@Serializable
+private object DependenciesList
+
+@Serializable
+private data class DependencyLicense(
+ val dependency: String
+)
@Composable
fun OpenSourceDependenciesNavHost(
@@ -35,20 +43,19 @@
navigateUp: () -> Unit
) {
val navController = rememberNavController()
- NavHost(navController, startDestination = "dependencies") {
- composable("dependencies") {
+ NavHost(navController, startDestination = DependenciesList) {
+ composable<DependenciesList> {
OpenSourceDependenciesListScreen(
viewModel = openSourceLicensesViewModel,
onDependencyClick = {
- navController.navigate("dependency_license/${UriUtils.encode(it)}")
+ navController.navigate(DependencyLicense(it))
},
onUpClick = navigateUp
)
}
- composable("dependency_license/{dependency}") {
- val dependency = requireNotNull(it.arguments?.read {
- getString("dependency")
- })
+ composable<DependencyLicense> {
+ val route = it.toRoute<DependencyLicense>()
+ val dependency = route.dependency
OpenSourceLicenseScreen(
viewModel = openSourceLicensesViewModel,
dependency = dependency,