Skip to content

Commit 6e780db

Browse files
committed
Fetaure: NavHostController supports NavigationResults
1 parent a237bf2 commit 6e780db

File tree

17 files changed

+116
-23
lines changed

17 files changed

+116
-23
lines changed

app/versions/dependencies/debugRuntimeClasspathDependencies.txt

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1379,6 +1379,12 @@ debugRuntimeClasspath - Runtime classpath of '/debug'.
13791379
| | +--- co.touchlab:kermit:2.0.2 (*)
13801380
| | +--- io.coil-kt.coil3:coil-compose-core:3.0.4 (*)
13811381
| | +--- io.coil-kt.coil3:coil-network-ktor3:3.0.4 (*)
1382+
| | +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.0
1383+
| | | \--- org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.8.0
1384+
| | | +--- org.jetbrains.kotlinx:kotlinx-serialization-bom:1.8.0 (*)
1385+
| | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 -> 2.1.20 (*)
1386+
| | | \--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.8.0 (*)
1387+
| | +--- project :modules:library-navigation-api (*)
13821388
| | +--- org.jetbrains.compose.components:components-resources:1.8.0 (*)
13831389
| | +--- org.jetbrains.compose.foundation:foundation:1.8.0 (*)
13841390
| | +--- org.jetbrains.compose.material:material:1.8.0
@@ -1511,11 +1517,7 @@ debugRuntimeClasspath - Runtime classpath of '/debug'.
15111517
| | +--- project :modules:feature-common-api
15121518
| | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.9.0-beta01 (*)
15131519
| | | +--- io.ktor:ktor-client-android:3.0.1 (*)
1514-
| | | +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.0
1515-
| | | | \--- org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.8.0
1516-
| | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-bom:1.8.0 (*)
1517-
| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 -> 2.1.20 (*)
1518-
| | | | \--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.8.0 (*)
1520+
| | | +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.0 (*)
15191521
| | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.20 (*)
15201522
| | | +--- com.kizitonwose.calendar:compose-multiplatform:2.5.4 (*)
15211523
| | | +--- io.coil-kt.coil3:coil-compose:3.0.4 (*)

app/versions/dependencies/debugUnitTestRuntimeClasspathDependencies.txt

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1504,6 +1504,12 @@ debugUnitTestRuntimeClasspath - Runtime classpath of '/debugUnitTest'.
15041504
| | +--- co.touchlab:kermit:2.0.2 (*)
15051505
| | +--- io.coil-kt.coil3:coil-compose-core:3.0.4 (*)
15061506
| | +--- io.coil-kt.coil3:coil-network-ktor3:3.0.4 (*)
1507+
| | +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.0
1508+
| | | \--- org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.8.0
1509+
| | | +--- org.jetbrains.kotlinx:kotlinx-serialization-bom:1.8.0 (*)
1510+
| | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 -> 2.1.20 (*)
1511+
| | | \--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.8.0 (*)
1512+
| | +--- project :modules:library-navigation-api (*)
15071513
| | +--- org.jetbrains.compose.components:components-resources:1.8.0 (*)
15081514
| | +--- org.jetbrains.compose.foundation:foundation:1.8.0 (*)
15091515
| | +--- org.jetbrains.compose.material:material:1.8.0
@@ -1636,11 +1642,7 @@ debugUnitTestRuntimeClasspath - Runtime classpath of '/debugUnitTest'.
16361642
| | +--- project :modules:feature-common-api
16371643
| | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.9.0-beta01 (*)
16381644
| | | +--- io.ktor:ktor-client-android:3.0.1 (*)
1639-
| | | +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.0
1640-
| | | | \--- org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.8.0
1641-
| | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-bom:1.8.0 (*)
1642-
| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 -> 2.1.20 (*)
1643-
| | | | \--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.8.0 (*)
1645+
| | | +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.0 (*)
16441646
| | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.20 (*)
16451647
| | | +--- com.kizitonwose.calendar:compose-multiplatform:2.5.4 (*)
16461648
| | | +--- io.coil-kt.coil3:coil-compose:3.0.4 (*)

app/versions/dependencies/releaseRuntimeClasspathDependencies.txt

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1254,6 +1254,12 @@ releaseRuntimeClasspath - Runtime classpath of '/release'.
12541254
| | +--- co.touchlab:kermit:2.0.2 (*)
12551255
| | +--- io.coil-kt.coil3:coil-compose-core:3.0.4 (*)
12561256
| | +--- io.coil-kt.coil3:coil-network-ktor3:3.0.4 (*)
1257+
| | +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.0
1258+
| | | \--- org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.8.0
1259+
| | | +--- org.jetbrains.kotlinx:kotlinx-serialization-bom:1.8.0 (*)
1260+
| | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 -> 2.1.20 (*)
1261+
| | | \--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.8.0 (*)
1262+
| | +--- project :modules:library-navigation-api (*)
12571263
| | +--- org.jetbrains.compose.components:components-resources:1.8.0 (*)
12581264
| | +--- org.jetbrains.compose.foundation:foundation:1.8.0 (*)
12591265
| | +--- org.jetbrains.compose.material:material:1.8.0
@@ -1411,11 +1417,7 @@ releaseRuntimeClasspath - Runtime classpath of '/release'.
14111417
| | +--- project :modules:feature-common-api
14121418
| | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.9.0-beta01 (*)
14131419
| | | +--- io.ktor:ktor-client-android:3.0.1 (*)
1414-
| | | +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.0
1415-
| | | | \--- org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.8.0
1416-
| | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-bom:1.8.0 (*)
1417-
| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 -> 2.1.20 (*)
1418-
| | | | \--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.8.0 (*)
1420+
| | | +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.0 (*)
14191421
| | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.20 (*)
14201422
| | | +--- com.kizitonwose.calendar:compose-multiplatform:2.5.4 (*)
14211423
| | | +--- io.coil-kt.coil3:coil-compose:3.0.4 (*)

app/versions/dependencies/releaseUnitTestRuntimeClasspathDependencies.txt

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1380,6 +1380,12 @@ releaseUnitTestRuntimeClasspath - Runtime classpath of '/releaseUnitTest'.
13801380
| | +--- co.touchlab:kermit:2.0.2 (*)
13811381
| | +--- io.coil-kt.coil3:coil-compose-core:3.0.4 (*)
13821382
| | +--- io.coil-kt.coil3:coil-network-ktor3:3.0.4 (*)
1383+
| | +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.0
1384+
| | | \--- org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.8.0
1385+
| | | +--- org.jetbrains.kotlinx:kotlinx-serialization-bom:1.8.0 (*)
1386+
| | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 -> 2.1.20 (*)
1387+
| | | \--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.8.0 (*)
1388+
| | +--- project :modules:library-navigation-api (*)
13831389
| | +--- org.jetbrains.compose.components:components-resources:1.8.0 (*)
13841390
| | +--- org.jetbrains.compose.foundation:foundation:1.8.0 (*)
13851391
| | +--- org.jetbrains.compose.material:material:1.8.0
@@ -1537,11 +1543,7 @@ releaseUnitTestRuntimeClasspath - Runtime classpath of '/releaseUnitTest'.
15371543
| | +--- project :modules:feature-common-api
15381544
| | | +--- org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.9.0-beta01 (*)
15391545
| | | +--- io.ktor:ktor-client-android:3.0.1 (*)
1540-
| | | +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.0
1541-
| | | | \--- org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.8.0
1542-
| | | | +--- org.jetbrains.kotlinx:kotlinx-serialization-bom:1.8.0 (*)
1543-
| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 -> 2.1.20 (*)
1544-
| | | | \--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.8.0 (*)
1546+
| | | +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.0 (*)
15451547
| | | +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.20 (*)
15461548
| | | +--- com.kizitonwose.calendar:compose-multiplatform:2.5.4 (*)
15471549
| | | +--- io.coil-kt.coil3:coil-compose:3.0.4 (*)
0 Bytes
Binary file not shown.
Binary file not shown.

modules/feature-home-shared/src/commonMain/kotlin/com/jarroyo/feature/home/shared/ui/RootView.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import androidx.navigation.compose.composable
2424
import androidx.compose.ui.Modifier
2525
import com.jarroyo.library.feature.Feature
2626
import com.jarroyo.library.ui.shared.component.LocalMainScaffoldPadding
27+
import com.jarroyo.library.ui.shared.component.LocalNavHostController
2728

2829
internal val darkmodeState = mutableStateOf(false)
2930
internal val safeAreaState = mutableStateOf(PaddingValues())
@@ -40,6 +41,7 @@ fun RootView() {
4041
val mainScaffoldPadding: MutableState<PaddingValues> = remember { mutableStateOf(PaddingValues()) }
4142
CompositionLocalProvider(
4243
LocalMainScaffoldPadding provides mainScaffoldPadding,
44+
LocalNavHostController provides navHostController,
4345
) {
4446
Scaffold(
4547
modifier = Modifier.fillMaxSize(),

modules/feature-launches-api/src/commonMain/kotlin/com/jarroyo/feature/launches/api/destination/LaunchDestination.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import androidx.navigation.NamedNavArgument
55
import androidx.navigation.NavType
66
import androidx.navigation.navArgument
77
import com.jarroyo.library.navigation.api.destination.NavigationDestination
8+
import kotlinx.serialization.Serializable
89

910
object LaunchDestination : NavigationDestination() {
1011
private const val ID_PARAM = "id"
@@ -20,6 +21,13 @@ object LaunchDestination : NavigationDestination() {
2021

2122
fun get(id: String): String = route.replace("{$ID_PARAM}", id)
2223

24+
@Serializable
25+
data class Result(
26+
override val id: Long = uniqueId,
27+
val type: String,
28+
val name: String,
29+
) : NavigationDestination.Result()
30+
2331
object Arguments {
2432
fun getId(savedStateHandle: SavedStateHandle): String? = savedStateHandle[ID_PARAM]
2533
}

modules/feature-launches/src/commonMain/kotlin/com/jarroyo/feature/launches/ui/launchdetail/LaunchDetailContract.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package com.jarroyo.feature.launches.ui.launchdetail
22

33
import androidx.compose.runtime.Immutable
44
import com.jarroyo.composeapp.library.network.api.graphql.fragment.LaunchFragment
5+
import com.jarroyo.feature.launches.api.destination.LaunchDestination
56
import com.jarroyo.library.ui.shared.ViewEffect
67
import com.jarroyo.library.ui.shared.ViewEvent
78
import com.jarroyo.library.ui.shared.ViewState
@@ -22,6 +23,10 @@ object LaunchDetailContract {
2223
}
2324

2425
sealed class Effect : ViewEffect {
26+
data class SetResultAndNavigate(
27+
val result: LaunchDestination.Result,
28+
val navigate: () -> Unit,
29+
) : Effect()
2530
data class ShowSnackbar(val message: String) : Effect()
2631
}
2732
}

modules/feature-launches/src/commonMain/kotlin/com/jarroyo/feature/launches/ui/launchdetail/LaunchDetailScreen.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,13 @@ import androidx.compose.ui.text.style.TextAlign
2727
import coil3.compose.AsyncImage
2828
import com.jarroyo.composeapp.library.network.api.graphql.fragment.LaunchFragment
2929
import com.jarroyo.composeapp.library.network.api.graphql.fragment.RocketFragment
30+
import com.jarroyo.feature.launches.api.destination.LaunchDestination
3031
import com.jarroyo.feature.launches.ui.launchdetail.LaunchDetailContract.Effect
3132
import com.jarroyo.feature.launches.ui.launchdetail.LaunchDetailContract.Event
3233
import com.jarroyo.feature.launches.ui.launchdetail.LaunchDetailContract.State
34+
import com.jarroyo.library.ui.shared.component.LocalNavHostController
3335
import com.jarroyo.library.ui.shared.component.placeholder
36+
import com.jarroyo.library.ui.shared.component.setResult
3437
import com.jarroyo.library.ui.shared.theme.Spacing
3538
import kotlinx.coroutines.flow.Flow
3639
import kotlinx.coroutines.flow.collect
@@ -54,10 +57,15 @@ private fun LaunchDetailScreen(
5457
sendEvent: (event: Event) -> Unit,
5558
state: State,
5659
) {
60+
val navHostController = LocalNavHostController.current
5761
val snackbarHostState = remember { SnackbarHostState() }
5862
LaunchedEffect(effectFlow) {
5963
effectFlow.onEach { effect ->
6064
when (effect) {
65+
is Effect.SetResultAndNavigate -> {
66+
navHostController.setResult(LaunchDestination.route, effect.result)
67+
effect.navigate()
68+
}
6169
is Effect.ShowSnackbar -> launch {
6270
snackbarHostState.showSnackbar(
6371
message = effect.message,

0 commit comments

Comments
 (0)