Skip to content

Commit 5a28653

Browse files
committed
Fixed failing test
1 parent 844f0b4 commit 5a28653

File tree

5 files changed

+21
-6
lines changed

5 files changed

+21
-6
lines changed

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ val LocalCacheSettings.android: com.google.firebase.firestore.LocalCacheSettings
5757
private val callbackExecutorMap = ConcurrentHashMap<com.google.firebase.firestore.FirebaseFirestore, Executor>()
5858

5959
actual typealias NativeFirebaseFirestore = com.google.firebase.firestore.FirebaseFirestore
60-
actual internal class NativeFirebaseFirestoreWrapper actual constructor(actual val native: NativeFirebaseFirestore) {
60+
internal actual class NativeFirebaseFirestoreWrapper actual constructor(actual val native: NativeFirebaseFirestore) {
6161

6262
actual var settings: FirebaseFirestoreSettings
6363
get() = with(native.firestoreSettings) {

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

+2-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,8 @@ class FirebaseFirestore internal constructor(private val wrapper: NativeFirebase
4040

4141
constructor(native: NativeFirebaseFirestore) : this(NativeFirebaseFirestoreWrapper(native))
4242

43-
val native = wrapper.native
43+
// Important to leave this as a get property since on JS it is initialized lazily
44+
val native get() = wrapper.native
4445
var settings: FirebaseFirestoreSettings
4546
get() = wrapper.settings
4647
set(value) {

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

+7-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,13 @@ class FirestoreSourceTest {
3939

4040
firestore = Firebase.firestore(app).apply {
4141
useEmulator(emulatorHost, 8080)
42-
setSettings(persistenceEnabled = persistenceEnabled)
42+
settings = firestoreSettings(settings) {
43+
cacheSettings = if (persistenceEnabled) {
44+
persistentCacheSettings { }
45+
} else {
46+
memoryCacheSettings { }
47+
}
48+
}
4349
}
4450
}
4551

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ val LocalCacheSettings.ios: FIRLocalCacheSettingsProtocol get() = when (this) {
3939
actual typealias NativeFirebaseFirestore = FIRFirestore
4040

4141
@Suppress("UNCHECKED_CAST")
42-
actual internal class NativeFirebaseFirestoreWrapper internal actual constructor(actual val native: NativeFirebaseFirestore) {
42+
internal actual class NativeFirebaseFirestoreWrapper internal actual constructor(actual val native: NativeFirebaseFirestore) {
4343

4444
actual var settings: FirebaseFirestoreSettings = firestoreSettings { }.also {
4545
native.settings = it.ios

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

+10-2
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ actual fun Firebase.firestore(app: FirebaseApp) =
7878

7979
actual data class NativeFirebaseFirestore(val js: JsFirestore)
8080

81-
actual internal class NativeFirebaseFirestoreWrapper internal constructor(
81+
internal actual class NativeFirebaseFirestoreWrapper internal constructor(
8282
private val createNative: NativeFirebaseFirestoreWrapper.() -> NativeFirebaseFirestore
8383
){
8484

@@ -98,13 +98,21 @@ actual internal class NativeFirebaseFirestoreWrapper internal constructor(
9898
private data class EmulatorSettings(val host: String, val port: Int)
9999

100100
actual var settings: FirebaseFirestoreSettings = FirebaseFirestoreSettings.Builder().build()
101+
set(value) {
102+
if (lazyNative.isInitialized()) {
103+
throw IllegalStateException("FirebaseFirestore has already been started and its settings can no longer be changed. You can only call setFirestoreSettings() before calling any other methods on a FirebaseFirestore object.")
104+
} else {
105+
field = value
106+
}
107+
}
101108
private var emulatorSettings: EmulatorSettings? = null
102109

103110
// initializeFirestore must be called before any call, including before `getFirestore()`
104111
// To allow settings to be updated, we defer creating the wrapper until the first call to `native`
105-
actual val native: NativeFirebaseFirestore by lazy {
112+
private val lazyNative = lazy {
106113
createNative()
107114
}
115+
actual val native: NativeFirebaseFirestore by lazyNative
108116
private val js get() = native.js
109117

110118
actual fun collection(collectionPath: String) = rethrow { NativeCollectionReference(jsCollection(js, collectionPath)) }

0 commit comments

Comments
 (0)