@@ -72,6 +72,10 @@ class FirebaseEncoder(internal val shouldEncodeElementDefault: Boolean, positive
7272 override fun encodeString (value : String ) {
7373 this .value = value
7474 }
75+
76+ @ExperimentalSerializationApi
77+ override fun encodeInline (inlineDescriptor : SerialDescriptor ): Encoder =
78+ FirebaseEncoder (shouldEncodeElementDefault, positiveInfinity)
7579}
7680
7781abstract class TimestampEncoder (internal val positiveInfinity : Any ) {
@@ -100,29 +104,55 @@ open class FirebaseCompositeEncoder constructor(
100104
101105 override fun shouldEncodeElementDefault (descriptor : SerialDescriptor , index : Int ) = shouldEncodeElementDefault
102106
103- override fun <T : Any > encodeNullableSerializableElement (descriptor : SerialDescriptor , index : Int , serializer : SerializationStrategy <T >, value : T ? ) =
104- set(descriptor, index, value?.let { FirebaseEncoder (shouldEncodeElementDefault, positiveInfinity).apply { encodeSerializableValue(serializer, value) }.value })
105-
106- override fun <T > encodeSerializableElement (descriptor : SerialDescriptor , index : Int , serializer : SerializationStrategy <T >, value : T ) =
107- set(descriptor, index, FirebaseEncoder (shouldEncodeElementDefault, positiveInfinity).apply { encodeSerializableValue(serializer, value) }.value)
107+ override fun <T : Any > encodeNullableSerializableElement (
108+ descriptor : SerialDescriptor ,
109+ index : Int ,
110+ serializer : SerializationStrategy <T >,
111+ value : T ?
112+ ) = set(
113+ descriptor,
114+ index,
115+ value?.let {
116+ FirebaseEncoder (shouldEncodeElementDefault, positiveInfinity).apply {
117+ encodeSerializableValue(serializer, value)
118+ }.value
119+ }
120+ )
121+
122+ override fun <T > encodeSerializableElement (
123+ descriptor : SerialDescriptor ,
124+ index : Int ,
125+ serializer : SerializationStrategy <T >,
126+ value : T
127+ ) = set(
128+ descriptor,
129+ index,
130+ FirebaseEncoder (shouldEncodeElementDefault, positiveInfinity).apply {
131+ encodeSerializableValue(serializer, value)
132+ }.value
133+ )
108134
109135 override fun encodeBooleanElement (descriptor : SerialDescriptor , index : Int , value : Boolean ) = set(descriptor, index, value)
110136
111137 override fun encodeByteElement (descriptor : SerialDescriptor , index : Int , value : Byte ) = set(descriptor, index, value)
112138
113139 override fun encodeCharElement (descriptor : SerialDescriptor , index : Int , value : Char ) = set(descriptor, index, value)
114140
115- override fun encodeDoubleElement (descriptor : SerialDescriptor , index : Int , value : Double ) = set(descriptor, index, encodeTimestamp(value))
141+ override fun encodeDoubleElement (descriptor : SerialDescriptor , index : Int , value : Double ) = set(descriptor, index, encodeTimestamp(value))
116142
117143 override fun encodeFloatElement (descriptor : SerialDescriptor , index : Int , value : Float ) = set(descriptor, index, value)
118144
119145 override fun encodeIntElement (descriptor : SerialDescriptor , index : Int , value : Int ) = set(descriptor, index, value)
120146
121147 override fun encodeLongElement (descriptor : SerialDescriptor , index : Int , value : Long ) = set(descriptor, index, value)
122148
123- override fun encodeShortElement (descriptor : SerialDescriptor , index : Int , value : Short ) = set(descriptor, index, value)
149+ override fun encodeShortElement (descriptor : SerialDescriptor , index : Int , value : Short ) = set(descriptor, index, value)
150+
151+ override fun encodeStringElement (descriptor : SerialDescriptor , index : Int , value : String ) = set(descriptor, index, value)
124152
125- override fun encodeStringElement (descriptor : SerialDescriptor , index : Int , value : String ) = set(descriptor, index, value)
153+ @ExperimentalSerializationApi
154+ override fun encodeInlineElement (descriptor : SerialDescriptor , index : Int ): Encoder =
155+ FirebaseEncoder (shouldEncodeElementDefault, positiveInfinity)
126156}
127157
128158
0 commit comments