Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

crash on rememberSavableNavigator #9

Closed
francois76 opened this issue Jun 30, 2023 · 2 comments · Fixed by #11
Closed

crash on rememberSavableNavigator #9

francois76 opened this issue Jun 30, 2023 · 2 comments · Fixed by #11

Comments

@francois76
Copy link

Describe the bug
the serialization of the navigator is incorrect. On configuration change, the application crash

To Reproduce
defined model :

@Serializable
enum class Route(val value: String) { LIVE("live"), PLAYLIST("playlist"), SEARCH("search"), REPLAY("replay"), PLAYER("player") }

@Serializable
data class RouteData( val id: Route, val arguments: List<String>, )

call to the function
val navigator = rememberSavableNavigator(initialDestination = allRoutes[Route.LIVE]!!, destinationSerializer =RouteData.serializer())

Expected behavior
Configuration change preserve the navigator state

Stacktrace error
Process: fr.fgognet.antv.debug, PID: 5263 kotlinx.serialization.SerializationException: Class 'RouteData' is not registered for polymorphic serialization in the scope of 'Any'. To be registered automatically, class 'RouteData' has to be '@Serializable', and the base class 'Any' has to be sealed and '@Serializable'. Alternatively, register the serializer for 'RouteData' explicitly in a corresponding SerializersModule. at kotlinx.serialization.internal.AbstractPolymorphicSerializerKt.throwSubtypeNotRegistered(AbstractPolymorphicSerializer.kt:102) at kotlinx.serialization.internal.AbstractPolymorphicSerializerKt.throwSubtypeNotRegistered(AbstractPolymorphicSerializer.kt:114) at kotlinx.serialization.PolymorphicSerializerKt.findPolymorphicSerializer(PolymorphicSerializer.kt:109) at kotlinx.serialization.internal.AbstractPolymorphicSerializer.serialize(AbstractPolymorphicSerializer.kt:32) at kotlinx.serialization.encoding.Encoder$DefaultImpls.encodeSerializableValue(Encoding.kt:279) at kotlinx.serialization.encoding.AbstractEncoder.encodeSerializableValue(AbstractEncoder.kt:18) at kotlinx.serialization.encoding.AbstractEncoder.encodeSerializableElement(AbstractEncoder.kt:80) at com.chrynan.navigation.NavigationEvent$Forward$Destination.write$Self(NavigationEvent.kt:102) at com.chrynan.navigation.NavigationEvent$Forward$Destination$$serializer.serialize(NavigationEvent.kt:102) at com.chrynan.navigation.NavigationEvent$Forward$Destination$$serializer.serialize(NavigationEvent.kt:102) at kotlinx.serialization.encoding.Encoder$DefaultImpls.encodeSerializableValue(Encoding.kt:279) at kotlinx.serialization.encoding.AbstractEncoder.encodeSerializableValue(AbstractEncoder.kt:18) at kotlinx.serialization.encoding.AbstractEncoder.encodeSerializableElement(AbstractEncoder.kt:80) at kotlinx.serialization.internal.AbstractPolymorphicSerializer.serialize(AbstractPolymorphicSerializer.kt:35) at kotlinx.serialization.encoding.Encoder$DefaultImpls.encodeSerializableValue(Encoding.kt:279) at kotlinx.serialization.encoding.AbstractEncoder.encodeSerializableValue(AbstractEncoder.kt:18) at kotlinx.serialization.internal.NullableSerializer.serialize(NullableSerializer.kt:23) at kotlinx.serialization.encoding.Encoder$DefaultImpls.encodeSerializableValue(Encoding.kt:279) at kotlinx.serialization.encoding.AbstractEncoder.encodeSerializableValue(AbstractEncoder.kt:18) at com.chrynan.navigation.NavigationStateSerializer.serialize(NavigationState.kt:142) at com.chrynan.navigation.NavigationStateSerializer.serialize(NavigationState.kt:131) at kotlinx.serialization.encoding.Encoder$DefaultImpls.encodeSerializableValue(Encoding.kt:279) at kotlinx.serialization.encoding.AbstractEncoder.encodeSerializableValue(AbstractEncoder.kt:18) at com.chrynan.navigation.NavigationStateStoreSerializer.serialize(NavigationStateStore.kt:184) at com.chrynan.navigation.NavigationStateStoreSerializer.serialize(NavigationStateStore.kt:164) at kotlinx.serialization.encoding.Encoder$DefaultImpls.encodeSerializableValue(Encoding.kt:279) at kotlinx.serialization.encoding.AbstractEncoder.encodeSerializableValue(AbstractEncoder.kt:18) at kotlinx.serialization.encoding.AbstractEncoder.encodeSerializableElement(AbstractEncoder.kt:80) at com.chrynan.navigation.NavigatorSnapshot.write$Self(Navigator.kt:190) at com.chrynan.navigation.NavigatorSnapshot$$serializer.serialize(Navigator.kt:190) at com.chrynan.navigation.NavigatorSnapshot$$serializer.serialize(Navigator.kt:190)

@github-actions
Copy link

Welcome and thanks for contributing! Make sure to leave a detailed explanation of the issue.

@chRyNaN
Copy link
Owner

chRyNaN commented Jul 12, 2023

Thanks for bringing up this issue! The issue is fixed in the following PR and will be out in the next release: #11

@chRyNaN chRyNaN closed this as completed Jul 12, 2023
chRyNaN added a commit that referenced this issue Jul 12, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants