@@ -22,13 +22,6 @@ internal inline fun <reified T> decode(value: Any?): T =
22
22
internal fun <T > decode (strategy : DeserializationStrategy <T >, value : Any? ): T =
23
23
decode(strategy, value) { (it as ? Timestamp )?.run { seconds * 1000 + (nanoseconds / 1000000.0 ) } }
24
24
25
- @PublishedApi
26
- internal inline fun <reified T > encode (value : T , shouldEncodeElementDefault : Boolean ) =
27
- encode(value, shouldEncodeElementDefault, FieldValue .serverTimestamp())
28
-
29
- private fun <T > encode (strategy : SerializationStrategy <T > , value : T , shouldEncodeElementDefault : Boolean ): Any? =
30
- encode(strategy, value, shouldEncodeElementDefault, FieldValue .serverTimestamp())
31
-
32
25
actual val Firebase .firestore get() =
33
26
FirebaseFirestore (com.google.firebase.firestore.FirebaseFirestore .getInstance())
34
27
@@ -116,27 +109,26 @@ actual class WriteBatch(val android: com.google.firebase.firestore.WriteBatch) {
116
109
117
110
@JvmName(" updateFields" )
118
111
actual fun update (documentRef : DocumentReference , vararg fieldsAndValues : Pair <String , Any ?>) =
119
- android.takeUnless { fieldsAndValues.isEmpty() }
120
- ?.update(
121
- documentRef.android,
122
- fieldsAndValues[0 ].first,
123
- fieldsAndValues[0 ].second,
124
- * fieldsAndValues.drop(1 ).flatMap { (field, value) ->
125
- listOf (field, value?.let { encode(value, true ) })
126
- }.toTypedArray()
127
- ).let { this }
112
+ fieldsAndValues.takeUnless { fieldsAndValues.isEmpty() }
113
+ ?.map { (field, value) -> field to encode(value, true ) }
114
+ ?.let { encoded -> android.update(documentRef.android, encoded.toMap()) }
115
+ .let { this }
128
116
129
117
@JvmName(" updateFieldPaths" )
130
118
actual fun update (documentRef : DocumentReference , vararg fieldsAndValues : Pair <FieldPath , Any ?>) =
131
- android.takeUnless { fieldsAndValues.isEmpty() }
132
- ?.update(
133
- documentRef.android,
134
- fieldsAndValues[0 ].first.android,
135
- fieldsAndValues[0 ].second,
136
- * fieldsAndValues.drop(1 ).flatMap { (field, value) ->
137
- listOf (field.android, value?.let { encode(value, true ) })
138
- }.toTypedArray()
139
- ).let { this }
119
+ fieldsAndValues.takeUnless { fieldsAndValues.isEmpty() }
120
+ ?.map { (field, value) -> field.android to encode(value, true ) }
121
+ ?.let { encoded ->
122
+ android.update(
123
+ documentRef.android,
124
+ encoded.first().first,
125
+ encoded.first().second,
126
+ * encoded.drop(1 )
127
+ .flatMap { (field, value) -> listOf (field, value) }
128
+ .toTypedArray()
129
+ )
130
+ }
131
+ .let { this }
140
132
141
133
actual fun delete (documentRef : DocumentReference ) =
142
134
android.delete(documentRef.android).let { this }
@@ -189,27 +181,25 @@ actual class Transaction(val android: com.google.firebase.firestore.Transaction)
189
181
190
182
@JvmName(" updateFields" )
191
183
actual fun update (documentRef : DocumentReference , vararg fieldsAndValues : Pair <String , Any ?>) =
192
- android.takeUnless { fieldsAndValues.isEmpty() }
193
- ?.update(
194
- documentRef.android,
195
- fieldsAndValues[0 ].first,
196
- fieldsAndValues[0 ].second,
197
- * fieldsAndValues.drop(1 ).flatMap { (field, value) ->
198
- listOf (field, value?.let { encode(value, true ) })
199
- }.toTypedArray()
200
- ).let { this }
184
+ fieldsAndValues.takeUnless { fieldsAndValues.isEmpty() }
185
+ ?.map { (field, value) -> field to encode(value, true ) }
186
+ ?.let { encoded -> android.update(documentRef.android, encoded.toMap()) }
187
+ .let { this }
201
188
202
189
@JvmName(" updateFieldPaths" )
203
190
actual fun update (documentRef : DocumentReference , vararg fieldsAndValues : Pair <FieldPath , Any ?>) =
204
- android.takeUnless { fieldsAndValues.isEmpty() }
205
- ?.update(
206
- documentRef.android,
207
- fieldsAndValues[0 ].first.android,
208
- fieldsAndValues[0 ].second,
209
- * fieldsAndValues.drop(1 ).flatMap { (field, value) ->
210
- listOf (field.android, value?.let { encode(value, true ) })
211
- }.toTypedArray()
212
- ).let { this }
191
+ fieldsAndValues.takeUnless { fieldsAndValues.isEmpty() }
192
+ ?.map { (field, value) -> field.android to encode(value, true ) }
193
+ ?.let { encoded ->
194
+ android.update(
195
+ documentRef.android,
196
+ encoded.first().first,
197
+ encoded.first().second,
198
+ * encoded.drop(1 )
199
+ .flatMap { (field, value) -> listOf (field, value) }
200
+ .toTypedArray()
201
+ )
202
+ }.let { this }
213
203
214
204
actual fun delete (documentRef : DocumentReference ) =
215
205
android.delete(documentRef.android).let { this }
@@ -264,27 +254,25 @@ actual class DocumentReference(val android: com.google.firebase.firestore.Docume
264
254
265
255
@JvmName(" updateFields" )
266
256
actual suspend fun update (vararg fieldsAndValues : Pair <String , Any ?>) =
267
- android.takeUnless { fieldsAndValues.isEmpty() }
268
- ?.update(
269
- fieldsAndValues[0 ].first,
270
- fieldsAndValues[0 ].second,
271
- * fieldsAndValues.drop(1 ).flatMap { (field, value) ->
272
- listOf (field, value?.let { encode(value, true ) })
273
- }.toTypedArray()
274
- )
257
+ fieldsAndValues.takeUnless { fieldsAndValues.isEmpty() }
258
+ ?.map { (field, value) -> field to encode(value, true ) }
259
+ ?.let { encoded -> android.update(encoded.toMap()) }
275
260
?.await()
276
261
.run { Unit }
277
262
278
263
@JvmName(" updateFieldPaths" )
279
264
actual suspend fun update (vararg fieldsAndValues : Pair <FieldPath , Any ?>) =
280
- android.takeUnless { fieldsAndValues.isEmpty() }
281
- ?.update(
282
- fieldsAndValues[0 ].first.android,
283
- fieldsAndValues[0 ].second,
284
- * fieldsAndValues.drop(1 ).flatMap { (field, value) ->
285
- listOf (field.android, value?.let { encode(value, true ) })
286
- }.toTypedArray()
287
- )
265
+ fieldsAndValues.takeUnless { fieldsAndValues.isEmpty() }
266
+ ?.map { (field, value) -> field.android to encode(value, true ) }
267
+ ?.let { encoded ->
268
+ android.update(
269
+ encoded.first().first,
270
+ encoded.first().second,
271
+ * encoded.drop(1 )
272
+ .flatMap { (field, value) -> listOf (field, value) }
273
+ .toTypedArray()
274
+ )
275
+ }
288
276
?.await()
289
277
.run { Unit }
290
278
@@ -449,7 +437,7 @@ actual class DocumentSnapshot(val android: com.google.firebase.firestore.Documen
449
437
450
438
actual class SnapshotMetadata (val android : com.google.firebase.firestore.SnapshotMetadata ) {
451
439
actual val hasPendingWrites: Boolean get() = android.hasPendingWrites()
452
- actual val isFromCache: Boolean get() = android.isFromCache()
440
+ actual val isFromCache: Boolean get() = android.isFromCache
453
441
}
454
442
455
443
actual class FieldPath private constructor(val android : com.google.firebase.firestore.FieldPath ) {
@@ -458,7 +446,7 @@ actual class FieldPath private constructor(val android: com.google.firebase.fire
458
446
}
459
447
460
448
actual object FieldValue {
461
- actual fun serverTimestamp (): Any = com.google.firebase.firestore. FieldValue .serverTimestamp()
449
+ actual fun serverTimestamp (): Any = FieldValue .serverTimestamp()
462
450
actual val delete: Any get() = FieldValue .delete()
463
451
actual fun arrayUnion (vararg elements : Any ): Any = FieldValue .arrayUnion(* elements)
464
452
actual fun arrayRemove (vararg elements : Any ): Any = FieldValue .arrayRemove(* elements)
0 commit comments