From c987bea83c720be42d8b392a58c5fa004c089321 Mon Sep 17 00:00:00 2001 From: Gijs van Veen Date: Thu, 11 Jul 2024 09:53:32 +0200 Subject: [PATCH] Settings as write only property --- .../api/android/firebase-firestore.api | 4 +- .../api/jvm/firebase-firestore.api | 4 +- .../gitlive/firebase/firestore/firestore.kt | 44 ++++++++++--------- .../firebase/firestore/FirestoreSourceTest.kt | 2 +- .../gitlive/firebase/firestore/firestore.kt | 2 +- 5 files changed, 30 insertions(+), 26 deletions(-) diff --git a/firebase-firestore/api/android/firebase-firestore.api b/firebase-firestore/api/android/firebase-firestore.api index 55fe69e24..afda9143b 100644 --- a/firebase-firestore/api/android/firebase-firestore.api +++ b/firebase-firestore/api/android/firebase-firestore.api @@ -258,7 +258,6 @@ public final class dev/gitlive/firebase/firestore/FilterBuilder { public final class dev/gitlive/firebase/firestore/FirebaseFirestore { public static final field Companion Ldev/gitlive/firebase/firestore/FirebaseFirestore$Companion; - public final fun applySettings (Ldev/gitlive/firebase/firestore/FirebaseFirestoreSettings;)V public final fun batch ()Ldev/gitlive/firebase/firestore/WriteBatch; public final fun clearPersistence (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public final fun collection (Ljava/lang/String;)Ldev/gitlive/firebase/firestore/CollectionReference; @@ -266,10 +265,11 @@ public final class dev/gitlive/firebase/firestore/FirebaseFirestore { public final fun disableNetwork (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public final fun document (Ljava/lang/String;)Ldev/gitlive/firebase/firestore/DocumentReference; public final fun enableNetwork (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public final fun getSettings ()Ldev/gitlive/firebase/firestore/FirebaseFirestoreSettings; public final fun runTransaction (Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public final fun setLoggingEnabled (Z)V + public final fun setSettings (Ldev/gitlive/firebase/firestore/FirebaseFirestoreSettings;)V public final fun setSettings (Ljava/lang/Boolean;Ljava/lang/Boolean;Ljava/lang/String;Ljava/lang/Long;)V - public final fun setSettings (Lkotlin/jvm/functions/Function1;)V public static synthetic fun setSettings$default (Ldev/gitlive/firebase/firestore/FirebaseFirestore;Ljava/lang/Boolean;Ljava/lang/Boolean;Ljava/lang/String;Ljava/lang/Long;ILjava/lang/Object;)V public final fun useEmulator (Ljava/lang/String;I)V } diff --git a/firebase-firestore/api/jvm/firebase-firestore.api b/firebase-firestore/api/jvm/firebase-firestore.api index 2baa38a60..5aed50345 100644 --- a/firebase-firestore/api/jvm/firebase-firestore.api +++ b/firebase-firestore/api/jvm/firebase-firestore.api @@ -258,7 +258,6 @@ public final class dev/gitlive/firebase/firestore/FilterBuilder { public final class dev/gitlive/firebase/firestore/FirebaseFirestore { public static final field Companion Ldev/gitlive/firebase/firestore/FirebaseFirestore$Companion; - public final fun applySettings (Ldev/gitlive/firebase/firestore/FirebaseFirestoreSettings;)V public final fun batch ()Ldev/gitlive/firebase/firestore/WriteBatch; public final fun clearPersistence (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public final fun collection (Ljava/lang/String;)Ldev/gitlive/firebase/firestore/CollectionReference; @@ -266,10 +265,11 @@ public final class dev/gitlive/firebase/firestore/FirebaseFirestore { public final fun disableNetwork (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public final fun document (Ljava/lang/String;)Ldev/gitlive/firebase/firestore/DocumentReference; public final fun enableNetwork (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public final fun getSettings ()Ldev/gitlive/firebase/firestore/FirebaseFirestoreSettings; public final fun runTransaction (Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public final fun setLoggingEnabled (Z)V + public final fun setSettings (Ldev/gitlive/firebase/firestore/FirebaseFirestoreSettings;)V public final fun setSettings (Ljava/lang/Boolean;Ljava/lang/Boolean;Ljava/lang/String;Ljava/lang/Long;)V - public final fun setSettings (Lkotlin/jvm/functions/Function1;)V public static synthetic fun setSettings$default (Ldev/gitlive/firebase/firestore/FirebaseFirestore;Ljava/lang/Boolean;Ljava/lang/Boolean;Ljava/lang/String;Ljava/lang/Long;ILjava/lang/Object;)V public final fun useEmulator (Ljava/lang/String;I)V } diff --git a/firebase-firestore/src/commonMain/kotlin/dev/gitlive/firebase/firestore/firestore.kt b/firebase-firestore/src/commonMain/kotlin/dev/gitlive/firebase/firestore/firestore.kt index 41bbd12b0..bf4723e49 100644 --- a/firebase-firestore/src/commonMain/kotlin/dev/gitlive/firebase/firestore/firestore.kt +++ b/firebase-firestore/src/commonMain/kotlin/dev/gitlive/firebase/firestore/firestore.kt @@ -45,6 +45,13 @@ public class FirebaseFirestore internal constructor(private val wrapper: NativeF // Important to leave this as a get property since on JS it is initialized lazily internal val native: NativeFirebaseFirestore get() = wrapper.native + public var settings: FirebaseFirestoreSettings + @Deprecated("Property can only be written.", level = DeprecationLevel.ERROR) + get() = throw NotImplementedError() + set(value) { + wrapper.applySettings(value) + } + public fun collection(collectionPath: String): CollectionReference = CollectionReference(wrapper.collection(collectionPath)) public fun collectionGroup(collectionId: String): Query = Query(wrapper.collectionGroup(collectionId)) public fun document(documentPath: String): DocumentReference = DocumentReference(wrapper.document(documentPath)) @@ -60,36 +67,33 @@ public class FirebaseFirestore internal constructor(private val wrapper: NativeF wrapper.useEmulator(host, port) } - @Deprecated("Use SettingsBuilder instead", replaceWith = ReplaceWith("setSettings { }")) + @Deprecated("Use SettingsBuilder instead", replaceWith = ReplaceWith("settings = firestoreSettings { }", "dev.gitlive.firebase.firestore.firestoreSettings")) public fun setSettings( persistenceEnabled: Boolean? = null, sslEnabled: Boolean? = null, host: String? = null, cacheSizeBytes: Long? = null, - ): Unit = setSettings { - this.sslEnabled = sslEnabled ?: true - this.host = host ?: FirebaseFirestoreSettings.DEFAULT_HOST - this.cacheSettings = if (persistenceEnabled != false) { - LocalCacheSettings.Persistent(cacheSizeBytes ?: FirebaseFirestoreSettings.CACHE_SIZE_UNLIMITED) - } else { - val cacheSize = cacheSizeBytes ?: FirebaseFirestoreSettings.CACHE_SIZE_UNLIMITED - val garbageCollectionSettings = if (cacheSize == FirebaseFirestoreSettings.CACHE_SIZE_UNLIMITED) { - MemoryGarbageCollectorSettings.Eager + ) { + settings = firestoreSettings { + this.sslEnabled = sslEnabled ?: true + this.host = host ?: FirebaseFirestoreSettings.DEFAULT_HOST + this.cacheSettings = if (persistenceEnabled != false) { + LocalCacheSettings.Persistent( + cacheSizeBytes ?: FirebaseFirestoreSettings.CACHE_SIZE_UNLIMITED, + ) } else { - MemoryGarbageCollectorSettings.LRUGC(cacheSize) + val cacheSize = cacheSizeBytes ?: FirebaseFirestoreSettings.CACHE_SIZE_UNLIMITED + val garbageCollectionSettings = + if (cacheSize == FirebaseFirestoreSettings.CACHE_SIZE_UNLIMITED) { + MemoryGarbageCollectorSettings.Eager + } else { + MemoryGarbageCollectorSettings.LRUGC(cacheSize) + } + LocalCacheSettings.Memory(garbageCollectionSettings) } - LocalCacheSettings.Memory(garbageCollectionSettings) } } - public fun applySettings(settings: FirebaseFirestoreSettings) { - wrapper.applySettings(settings) - } - - public fun setSettings(builder: FirebaseFirestoreSettings.Builder.() -> Unit): Unit = wrapper.applySettings( - firestoreSettings(builder = builder), - ) - public suspend fun disableNetwork() { wrapper.disableNetwork() } diff --git a/firebase-firestore/src/commonTest/kotlin/dev/gitlive/firebase/firestore/FirestoreSourceTest.kt b/firebase-firestore/src/commonTest/kotlin/dev/gitlive/firebase/firestore/FirestoreSourceTest.kt index c39efa04e..2a5d74d90 100644 --- a/firebase-firestore/src/commonTest/kotlin/dev/gitlive/firebase/firestore/FirestoreSourceTest.kt +++ b/firebase-firestore/src/commonTest/kotlin/dev/gitlive/firebase/firestore/FirestoreSourceTest.kt @@ -39,7 +39,7 @@ class FirestoreSourceTest { ) firestore = Firebase.firestore(app).apply { - setSettings { + settings = firestoreSettings { cacheSettings = if (persistenceEnabled) { persistentCacheSettings { } } else { diff --git a/firebase-firestore/src/commonTest/kotlin/dev/gitlive/firebase/firestore/firestore.kt b/firebase-firestore/src/commonTest/kotlin/dev/gitlive/firebase/firestore/firestore.kt index c6a00ba04..99148d8cc 100644 --- a/firebase-firestore/src/commonTest/kotlin/dev/gitlive/firebase/firestore/firestore.kt +++ b/firebase-firestore/src/commonTest/kotlin/dev/gitlive/firebase/firestore/firestore.kt @@ -105,7 +105,7 @@ class FirebaseFirestoreTest { firebaseApp = app firestore = Firebase.firestore(app).apply { - setSettings { + settings = firestoreSettings { cacheSettings = memoryCacheSettings { gcSettings = memoryEagerGcSettings { } }