Skip to content

Commit

Permalink
Fix state saving, upgrades
Browse files Browse the repository at this point in the history
  • Loading branch information
kihaki committed Feb 19, 2024
1 parent 1739f8d commit 73c36db
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@ import de.gaw.kruiser.backstack.ui.util.rememberSaveableBackstack
fun Backstack(
backstack: MutableBackstack,
modifier: Modifier = Modifier,
stateHolder: SaveableStateHolder = rememberSaveableStateHolder(),
stateHolder: SaveableStateHolder = LocalSaveableStateHolder.current
?: rememberSaveableStateHolder(),
backstackResultsStore: BackstackResultsStore = LocalBackstackEntriesResultsStore.current
?: rememberSaveableBackstackResultsStore(),
) {
Expand All @@ -45,9 +46,11 @@ fun Backstack(
*/
@Composable
fun BackstackContext(
mutableBackstack: MutableBackstack = rememberSaveableBackstack(),
mutableBackstack: MutableBackstack = LocalMutableBackstack.current
?: rememberSaveableBackstack(),
backstack: Backstack = mutableBackstack,
stateHolder: SaveableStateHolder = rememberSaveableStateHolder(),
stateHolder: SaveableStateHolder = LocalSaveableStateHolder.current
?: rememberSaveableStateHolder(),
backstackResultsStore: BackstackResultsStore = LocalBackstackEntriesResultsStore.current
?: rememberSaveableBackstackResultsStore(),
content: @Composable (Backstack) -> Unit,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
package de.gaw.kruiser.backstack.util

import android.util.Log
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.rememberUpdatedState
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import de.gaw.kruiser.backstack.core.Backstack
import de.gaw.kruiser.backstack.core.BackstackEntries
Expand All @@ -22,7 +24,7 @@ import kotlinx.coroutines.flow.stateIn
private class DerivedBackstack(
scope: CoroutineScope,
parent: Backstack,
override val id: String = "${parent.id}::${Backstack.generateId()}",
override val id: String,
mapping: BackstackEntries.() -> BackstackEntries,
) : Backstack {
override val entries: StateFlow<ImmutableEntries> =
Expand All @@ -49,9 +51,14 @@ fun rememberDerivedBackstackOf(
): Backstack {
val scope = rememberCoroutineScope()
val currentMapping by rememberUpdatedState(mapping)
val derivedBackstackId = rememberSaveable(backstack.id) {
"${backstack.id}::${Backstack.generateId()}"
}
return remember(scope, backstack.id) {
Log.v("Kruiser", "Deriving new Backstack for ${backstack.id} with id $derivedBackstackId")
DerivedBackstack(
scope = scope,
id = derivedBackstackId,
parent = backstack,
mapping = currentMapping,
)
Expand Down

0 comments on commit 73c36db

Please sign in to comment.