@@ -24,10 +24,10 @@ import platform.Foundation.*
2424import kotlin.collections.component1
2525import kotlin.collections.component2
2626
27- fun encode (value : Any? ) =
28- dev.gitlive.firebase.encode(value, FIRServerValue .timestamp())
29- fun <T > encode (strategy : SerializationStrategy <T > , value : T ): Any? =
30- dev.gitlive.firebase.encode(strategy, value, FIRServerValue .timestamp())
27+ fun encode (value : Any? , shouldEncodeElementDefault : Boolean ) =
28+ dev.gitlive.firebase.encode(value, shouldEncodeElementDefault, FIRServerValue .timestamp())
29+ fun <T > encode (strategy : SerializationStrategy <T > , value : T , shouldEncodeElementDefault : Boolean ): Any? =
30+ dev.gitlive.firebase.encode(strategy, value, shouldEncodeElementDefault, FIRServerValue .timestamp())
3131
3232actual val Firebase .database
3333 by lazy { FirebaseDatabase (FIRDatabase .database()) }
@@ -110,17 +110,17 @@ actual class DatabaseReference internal constructor(
110110 actual fun push () = DatabaseReference (ios.childByAutoId(), persistenceEnabled)
111111 actual fun onDisconnect () = OnDisconnect (ios, persistenceEnabled)
112112
113- actual suspend fun setValue (value : Any? ) {
114- ios.await(persistenceEnabled) { setValue(encode(value), it) }
113+ actual suspend fun setValue (value : Any? , encodeDefaults : Boolean ) {
114+ ios.await(persistenceEnabled) { setValue(encode(value, encodeDefaults ), it) }
115115 }
116116
117- actual suspend fun <T > setValue (strategy : SerializationStrategy <T >, value : T ) {
118- ios.await(persistenceEnabled) { setValue(encode(strategy, value), it) }
117+ actual suspend fun <T > setValue (strategy : SerializationStrategy <T >, value : T , encodeDefaults : Boolean ) {
118+ ios.await(persistenceEnabled) { setValue(encode(strategy, value, encodeDefaults ), it) }
119119 }
120120
121121 @Suppress(" UNCHECKED_CAST" )
122- actual suspend fun updateChildren (update : Map <String , Any ?>) {
123- ios.await(persistenceEnabled) { updateChildValues(encode(update) as Map <Any ?, * >, it) }
122+ actual suspend fun updateChildren (update : Map <String , Any ?>, encodeDefaults : Boolean ) {
123+ ios.await(persistenceEnabled) { updateChildValues(encode(update, encodeDefaults ) as Map <Any ?, * >, it) }
124124 }
125125
126126 actual suspend fun removeValue () {
@@ -157,16 +157,16 @@ actual class OnDisconnect internal constructor(
157157 ios.await(persistenceEnabled) { cancelDisconnectOperationsWithCompletionBlock(it) }
158158 }
159159
160- actual suspend fun setValue (value : Any ) {
161- ios.await(persistenceEnabled) { onDisconnectSetValue(encode(value), it) }
160+ actual suspend fun setValue (value : Any , encodeDefaults : Boolean ) {
161+ ios.await(persistenceEnabled) { onDisconnectSetValue(encode(value, encodeDefaults ), it) }
162162 }
163163
164- actual suspend fun <T > setValue (strategy : SerializationStrategy <T >, value : T ) {
165- ios.await(persistenceEnabled) { onDisconnectSetValue(encode(strategy, value), it) }
164+ actual suspend fun <T > setValue (strategy : SerializationStrategy <T >, value : T , encodeDefaults : Boolean ) {
165+ ios.await(persistenceEnabled) { onDisconnectSetValue(encode(strategy, value, encodeDefaults ), it) }
166166 }
167167
168- actual suspend fun updateChildren (update : Map <String , Any ?>) {
169- ios.await(persistenceEnabled) { onDisconnectUpdateChildValues(update.mapValues { (_, it) -> encode(it) } as Map <Any ?, * >, it) }
168+ actual suspend fun updateChildren (update : Map <String , Any ?>, encodeDefaults : Boolean ) {
169+ ios.await(persistenceEnabled) { onDisconnectUpdateChildValues(update.mapValues { (_, it) -> encode(it, encodeDefaults ) } as Map <Any ?, * >, it) }
170170 }
171171}
172172
0 commit comments