11package com.skyd.podaura.ui.component
22
3+ import androidx.compose.animation.AnimatedContentTransitionScope
4+ import androidx.compose.animation.ContentTransform
35import androidx.compose.animation.core.FiniteAnimationSpec
46import androidx.compose.animation.core.tween
57import androidx.compose.animation.fadeIn
@@ -17,48 +19,28 @@ import androidx.compose.material3.adaptive.layout.PaneScaffoldRole
1719import androidx.compose.material3.adaptive.layout.PaneScaffoldValue
1820import androidx.compose.runtime.Composable
1921import androidx.compose.ui.Modifier
20- import androidx.compose.ui.Modifier.Companion
2122import androidx.compose.ui.unit.IntRect
2223import androidx.lifecycle.viewmodel.navigation3.rememberViewModelStoreNavEntryDecorator
23- import androidx.navigation.NavType
2424import androidx.navigation3.runtime.NavEntry
2525import androidx.navigation3.runtime.NavEntryDecorator
2626import androidx.navigation3.runtime.rememberSaveableStateHolderNavEntryDecorator
27+ import androidx.navigation3.scene.Scene
2728import androidx.navigation3.scene.SceneStrategy
2829import androidx.navigation3.scene.SinglePaneSceneStrategy
2930import androidx.navigation3.ui.NavDisplay
30- import com.skyd.podaura.ui.component.UuidListType.Companion.decodeUuidList
31+ import androidx.navigationevent.NavigationEvent
3132import com.skyd.podaura.ui.component.navigation.deeplink.TypeParser
3233import kotlinx.io.Buffer
3334import kotlinx.io.readByteArray
3435import kotlinx.serialization.Serializable
3536import kotlinx.serialization.json.Json
37+ import kotlinx.serialization.json.encodeToJsonElement
3638import kotlin.io.encoding.Base64
3739import kotlin.uuid.Uuid
3840
3941
40- inline fun <reified T > serializableType (
41- json : Json = Json ,
42- ): TypeParser {
43- return { value ->
44- json.decodeFromString(value.hexToByteArray().decodeToString())
45- }
46- }
47-
48- inline fun <reified T > listType (
49- json : Json = Json ,
50- ): TypeParser {
51- return {
52- serializableType<List <T >>(json)
53- }
54- }
55-
5642@Serializable
57- data class UuidList (val uuids : List <String >)
58-
59- abstract class UuidListType <T >(
60- isNullableAllowed : Boolean = false ,
61- ) : NavType<T>(isNullableAllowed) {
43+ data class UuidList (val uuids : List <String >) {
6244 companion object {
6345 fun encodeUuidList (uuidList : List <Uuid >): String {
6446 val buffer = Buffer ()
@@ -88,7 +70,7 @@ abstract class UuidListType<T>(
8870
8971fun uuidListType (): TypeParser {
9072 return { value ->
91- UuidList (decodeUuidList(value).map { it.toString() })
73+ Json .encodeToJsonElement( UuidList (UuidList . decodeUuidList(value).map { it.toString() }) )
9274 }
9375}
9476
@@ -123,16 +105,27 @@ fun <T : Any> PodAuraNavDisplay(
123105 rememberViewModelStoreNavEntryDecorator()
124106 ),
125107 sceneStrategy : SceneStrategy <T > = SinglePaneSceneStrategy (),
108+ transitionSpec : AnimatedContentTransitionScope <Scene <T >>.() -> ContentTransform = {
109+ EnterTransition togetherWith ExitTransition
110+ },
111+ popTransitionSpec : AnimatedContentTransitionScope <Scene <T >>.() -> ContentTransform = {
112+ PopEnterTransition togetherWith PopExitTransition
113+ },
114+ predictivePopTransitionSpec : AnimatedContentTransitionScope <Scene <T >>.(
115+ @NavigationEvent .SwipeEdge Int
116+ ) -> ContentTransform = {
117+ PopEnterTransition togetherWith PopExitTransition
118+ },
126119 entryProvider : (key: T ) -> NavEntry <T >,
127120) = NavDisplay (
128121 backStack = backStack,
129122 modifier = modifier.background(MaterialTheme .colorScheme.background),
130123 onBack = onBack,
131124 entryDecorators = entryDecorators,
132125 sceneStrategy = sceneStrategy,
133- transitionSpec = { EnterTransition togetherWith ExitTransition } ,
134- popTransitionSpec = { PopEnterTransition togetherWith PopExitTransition } ,
135- predictivePopTransitionSpec = { PopEnterTransition togetherWith PopExitTransition } ,
126+ transitionSpec = transitionSpec ,
127+ popTransitionSpec = popTransitionSpec ,
128+ predictivePopTransitionSpec = predictivePopTransitionSpec ,
136129 entryProvider = entryProvider,
137130)
138131
0 commit comments