Skip to content

Commit 411888f

Browse files
committed
Simplify setup
1 parent 6a6d3f8 commit 411888f

File tree

3 files changed

+8
-14
lines changed

3 files changed

+8
-14
lines changed
Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,13 @@
11
package org.jetbrains.kotlinconf.navigation
22

33
import androidx.compose.runtime.Composable
4+
import androidx.compose.runtime.mutableStateListOf
45
import androidx.compose.runtime.saveable.rememberSerializable
5-
import androidx.navigation3.runtime.NavBackStack
66
import androidx.navigation3.runtime.NavKey
7-
import androidx.navigation3.runtime.serialization.NavBackStackSerializer
7+
import androidx.savedstate.compose.serialization.serializers.SnapshotStateListSerializer
88
import kotlinx.serialization.serializer
99

1010
@Composable
11-
inline fun <reified T : NavKey> rememberNavBackStack(vararg elements: T): NavBackStack<T> {
12-
return rememberSerializable(serializer = NavBackStackSerializer(serializer())) {
13-
NavBackStack(*elements)
14-
}
11+
inline fun <reified T : NavKey> rememberNavBackStack(vararg elements: T): MutableList<T> {
12+
return rememberSerializable(serializer = SnapshotStateListSerializer(serializer())) { mutableStateListOf(*elements) }
1513
}

shared/src/commonMain/kotlin/org/jetbrains/kotlinconf/navigation/KotlinConfNavHost.kt

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import androidx.compose.runtime.LaunchedEffect
77
import androidx.compose.ui.platform.LocalUriHandler
88
import androidx.lifecycle.viewmodel.navigation3.rememberViewModelStoreNavEntryDecorator
99
import androidx.navigation3.runtime.EntryProviderScope
10-
import androidx.navigation3.runtime.NavBackStack
1110
import androidx.navigation3.runtime.entryProvider
1211
import androidx.navigation3.runtime.rememberSaveableStateHolderNavEntryDecorator
1312
import androidx.navigation3.scene.Scene
@@ -61,7 +60,7 @@ fun navigateToNews(newsId: String) {
6160
private val notificationNavRequests = Channel<Any>(capacity = 1)
6261

6362
@Composable
64-
private fun NotificationHandler(backStack: NavBackStack<AppRoute>) {
63+
private fun NotificationHandler(backStack: MutableList<AppRoute>) {
6564
LaunchedEffect(Unit) {
6665
while (true) {
6766
val destination: Any = notificationNavRequests.receive()
@@ -75,7 +74,6 @@ internal fun KotlinConfNavHost(
7574
isOnboardingComplete: Boolean,
7675
popTransactionSpec: (AnimatedContentTransitionScope<Scene<Any>>.() -> ContentTransform)?,
7776
) {
78-
// TODO: make this saveable!
7977
val startDestination = if (isOnboardingComplete) MainScreen else StartPrivacyNoticeScreen
8078
val appBackStack = rememberNavBackStack<AppRoute>(startDestination)
8179

@@ -95,7 +93,7 @@ internal fun KotlinConfNavHost(
9593
)
9694
}
9795

98-
fun EntryProviderScope<Any>.screens(backStack: NavBackStack<AppRoute>) {
96+
fun EntryProviderScope<Any>.screens(backStack: MutableList<AppRoute>) {
9997
startScreens(backStack) // TODO inline these later
10098

10199
entry<MainScreen> {
@@ -237,7 +235,7 @@ fun EntryProviderScope<Any>.screens(backStack: NavBackStack<AppRoute>) {
237235
}
238236
}
239237

240-
fun EntryProviderScope<Any>.startScreens(backStack: NavBackStack<AppRoute>) {
238+
fun EntryProviderScope<Any>.startScreens(backStack: MutableList<AppRoute>) {
241239
entry<StartPrivacyNoticeScreen> {
242240
val skipNotifications = LocalFlags.current.supportsNotifications.not()
243241
AppPrivacyNoticePrompt(

shared/src/commonMain/kotlin/org/jetbrains/kotlinconf/screens/MainScreen.kt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ import androidx.compose.ui.platform.LocalDensity
2525
import androidx.compose.ui.platform.LocalUriHandler
2626
import androidx.compose.ui.unit.dp
2727
import androidx.lifecycle.viewmodel.navigation3.rememberViewModelStoreNavEntryDecorator
28-
import androidx.navigation3.runtime.NavBackStack
2928
import androidx.navigation3.runtime.entryProvider
3029
import androidx.navigation3.runtime.rememberSaveableStateHolderNavEntryDecorator
3130
import androidx.navigation3.ui.NavDisplay
@@ -85,7 +84,6 @@ fun MainScreen(
8584
.background(color = KotlinConfTheme.colors.mainBackground)
8685
.windowInsetsPadding(WindowInsets.safeDrawing)
8786
) {
88-
// TODO: make this saveable!
8987
val localBackStack = rememberNavBackStack<MainRoute>(ScheduleScreen)
9088

9189
NavDisplay(
@@ -162,7 +160,7 @@ private fun isKeyboardOpen(): Boolean {
162160
}
163161

164162
@Composable
165-
private fun BottomNavigation(localBackStack: NavBackStack<MainRoute>) {
163+
private fun BottomNavigation(localBackStack: MutableList<MainRoute>) {
166164
val bottomNavDestinations: List<MainNavDestination<MainRoute>> =
167165
listOf(
168166
MainNavDestination(

0 commit comments

Comments
 (0)