File tree Expand file tree Collapse file tree 5 files changed +21
-6
lines changed
androidMain/kotlin/dev/gitlive/firebase/firestore
commonMain/kotlin/dev/gitlive/firebase/firestore
commonTest/kotlin/dev/gitlive/firebase/firestore
iosMain/kotlin/dev/gitlive/firebase/firestore
jsMain/kotlin/dev/gitlive/firebase/firestore Expand file tree Collapse file tree 5 files changed +21
-6
lines changed Original file line number Diff line number Diff line change @@ -57,7 +57,7 @@ val LocalCacheSettings.android: com.google.firebase.firestore.LocalCacheSettings
5757private val callbackExecutorMap = ConcurrentHashMap < com.google.firebase.firestore.FirebaseFirestore , Executor > ()
5858
5959actual 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) {
Original file line number Diff line number Diff 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) {
Original file line number Diff line number Diff 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
Original file line number Diff line number Diff line change @@ -39,7 +39,7 @@ val LocalCacheSettings.ios: FIRLocalCacheSettingsProtocol get() = when (this) {
3939actual 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
Original file line number Diff line number Diff line change @@ -78,7 +78,7 @@ actual fun Firebase.firestore(app: FirebaseApp) =
7878
7979actual 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)) }
You can’t perform that action at this time.
0 commit comments