Skip to content

Commit fae5299

Browse files
committed
Track for JS
1 parent 582532d commit fae5299

File tree

7 files changed

+166
-204
lines changed

7 files changed

+166
-204
lines changed

firebase-firestore/src/androidMain/kotlin/dev/gitlive/firebase/firestore/firestore.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
@file:JvmName("android")
66
package dev.gitlive.firebase.firestore
77

8+
import com.google.android.gms.tasks.Task
89
import com.google.firebase.firestore.*
910
import dev.gitlive.firebase.*
1011
import kotlinx.coroutines.runBlocking

firebase-firestore/src/commonTest/kotlin/dev/gitlive/firebase/firestore/FieldValueTests.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package dev.gitlive.firebase.firestore
22

3+
import dev.gitlive.firebase.firebaseSerializer
34
import dev.gitlive.firebase.runTest
45
import kotlin.test.Test
56
import kotlin.test.assertEquals

firebase-firestore/src/commonTest/kotlin/dev/gitlive/firebase/firestore/firestore.kt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,15 @@
44

55
package dev.gitlive.firebase.firestore
66

7+
import dev.gitlive.firebase.EncodeSettings
78
import dev.gitlive.firebase.Firebase
89
import dev.gitlive.firebase.FirebaseOptions
910
import dev.gitlive.firebase.apps
11+
import dev.gitlive.firebase.decode
1012
import dev.gitlive.firebase.initialize
1113
import dev.gitlive.firebase.runBlockingTest
1214
import dev.gitlive.firebase.runTest
15+
import dev.gitlive.firebase.withSerializer
1316
import kotlinx.coroutines.Dispatchers
1417
import kotlinx.coroutines.async
1518
import kotlinx.coroutines.delay
@@ -728,7 +731,7 @@ class FirebaseFirestoreTest {
728731
fun encodeDocumentReference() = runTest {
729732
val doc = firestore.document("a/b")
730733
val item = TestDataWithDocumentReference("123", doc, doc)
731-
val encoded = encodedAsMap(encode(item, shouldEncodeElementDefault = false))
734+
val encoded = encodedAsMap(encode(item, EncodeSettings(shouldEncodeElementDefault = false)))
732735
assertEquals("123", encoded["uid"])
733736
assertEquals(doc.nativeValue, encoded["reference"])
734737
assertEquals(doc.nativeValue, encoded["optionalReference"])
@@ -737,7 +740,7 @@ class FirebaseFirestoreTest {
737740
@Test
738741
fun encodeNullDocumentReference() = runTest {
739742
val item = TestDataWithOptionalDocumentReference(null)
740-
val encoded = encodedAsMap(encode(item, shouldEncodeElementDefault = false))
743+
val encoded = encodedAsMap(encode(item, EncodeSettings(shouldEncodeElementDefault = false)))
741744
assertNull(encoded["optionalReference"])
742745
}
743746

@@ -791,7 +794,6 @@ class FirebaseFirestoreTest {
791794
assertNull(deletedList)
792795
}
793796

794-
private suspend fun setupFirestoreData() {
795797
@Test
796798
fun testQueryEqualTo() = runTest {
797799
setupFirestoreData()

firebase-firestore/src/jsMain/kotlin/dev/gitlive/firebase/firestore/firestore.kt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -246,11 +246,13 @@ actual class DocumentReference actual constructor(internal actual val nativeValu
246246
}
247247
}
248248

249-
actual typealias NativeQuery = JsQuery
249+
actual data class NativeQuery(val js: JsQuery)
250250

251251
actual open class Query internal actual constructor(nativeQuery: NativeQuery) {
252252

253-
open val js: JsQuery = nativeQuery
253+
constructor(js: JsQuery) : this(NativeQuery(js))
254+
255+
open val js: JsQuery = nativeQuery.js
254256

255257
actual suspend fun get() = rethrow { QuerySnapshot(getDocs(js).await()) }
256258

@@ -342,7 +344,7 @@ actual open class Query internal actual constructor(nativeQuery: NativeQuery) {
342344
}
343345
}
344346

345-
actual class CollectionReference(override val js: JsCollectionReference) : BaseCollectionReference(js) {
347+
actual class CollectionReference(override val js: JsCollectionReference) : BaseCollectionReference(NativeQuery(js)) {
346348

347349
actual val path: String
348350
get() = rethrow { js.path }
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package dev.gitlive.firebase.firestore
2+
3+
import kotlinx.serialization.Serializable
4+
5+
/** Represents a platform specific Firebase FieldValue. */
6+
typealias NativeFieldValue = com.google.firebase.firestore.FieldValue
7+
8+
/** Represents a Firebase FieldValue. */
9+
@Serializable(with = FieldValueSerializer::class)
10+
actual class FieldValue internal actual constructor(internal actual val nativeValue: Any) {
11+
init {
12+
require(nativeValue is NativeFieldValue)
13+
}
14+
override fun equals(other: Any?): Boolean =
15+
this === other || other is FieldValue && nativeValue == other.nativeValue
16+
override fun hashCode(): Int = nativeValue.hashCode()
17+
override fun toString(): String = nativeValue.toString()
18+
19+
actual companion object {
20+
actual val serverTimestamp: FieldValue get() = FieldValue(NativeFieldValue.serverTimestamp())
21+
actual val delete: FieldValue get() = FieldValue(NativeFieldValue.delete())
22+
actual fun increment(value: Int): FieldValue = FieldValue(NativeFieldValue.increment(value.toDouble()))
23+
actual fun arrayUnion(vararg elements: Any): FieldValue = FieldValue(NativeFieldValue.arrayUnion(*elements))
24+
actual fun arrayRemove(vararg elements: Any): FieldValue = FieldValue(NativeFieldValue.arrayRemove(*elements))
25+
}
26+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package dev.gitlive.firebase.firestore
2+
3+
@PublishedApi
4+
internal actual fun isSpecialValue(value: Any) = when(value) {
5+
is NativeFieldValue,
6+
is NativeGeoPoint,
7+
is NativeTimestamp,
8+
is NativeDocumentReference -> true
9+
else -> false
10+
}

0 commit comments

Comments
 (0)