diff --git a/firebase-database/src/androidMain/kotlin/dev/gitlive/firebase/database/database.kt b/firebase-database/src/androidMain/kotlin/dev/gitlive/firebase/database/database.kt index 0ce0e0d12..4b17fb7e0 100644 --- a/firebase-database/src/androidMain/kotlin/dev/gitlive/firebase/database/database.kt +++ b/firebase-database/src/androidMain/kotlin/dev/gitlive/firebase/database/database.kt @@ -227,13 +227,15 @@ actual class DataSnapshot internal constructor( actual val ref: DatabaseReference get() = DatabaseReference(android.ref, persistenceEnabled) - actual val value get() = android.value - + actual val value get(): Any? { + check(!hasChildren) { "DataSnapshot.value can only be used for primitive values (snapshots without children)" } + return android.value + } actual inline fun value() = - decode(value = android.value) + decode(value = android.getValue(true)) actual fun value(strategy: DeserializationStrategy) = - decode(strategy, android.value) + decode(strategy, android.getValue(true)) actual fun child(path: String) = DataSnapshot(android.child(path), persistenceEnabled) actual val hasChildren get() = android.hasChildren() diff --git a/firebase-database/src/iosMain/kotlin/dev/gitlive/firebase/database/database.kt b/firebase-database/src/iosMain/kotlin/dev/gitlive/firebase/database/database.kt index 128d7b6c2..0b6a0176a 100644 --- a/firebase-database/src/iosMain/kotlin/dev/gitlive/firebase/database/database.kt +++ b/firebase-database/src/iosMain/kotlin/dev/gitlive/firebase/database/database.kt @@ -193,10 +193,10 @@ actual class DataSnapshot internal constructor( actual val value get() = ios.value actual inline fun value() = - decode(value = ios.value) + decode(value = ios.valueInExportFormat()) actual fun value(strategy: DeserializationStrategy) = - decode(strategy, ios.value) + decode(strategy, ios.valueInExportFormat()) actual fun child(path: String) = DataSnapshot(ios.childSnapshotForPath(path), persistenceEnabled) actual val hasChildren get() = ios.hasChildren() diff --git a/firebase-database/src/jsMain/kotlin/dev/gitlive/firebase/database/database.kt b/firebase-database/src/jsMain/kotlin/dev/gitlive/firebase/database/database.kt index d4d47b6be..1dacff56d 100644 --- a/firebase-database/src/jsMain/kotlin/dev/gitlive/firebase/database/database.kt +++ b/firebase-database/src/jsMain/kotlin/dev/gitlive/firebase/database/database.kt @@ -170,10 +170,10 @@ actual class DataSnapshot internal constructor( } actual inline fun value() = - rethrow { decode(value = js.`val`()) } + rethrow { decode(value = js.exportVal()) } actual fun value(strategy: DeserializationStrategy) = - rethrow { decode(strategy, js.`val`()) } + rethrow { decode(strategy, js.exportVal()) } actual val exists get() = rethrow { js.exists() } actual val key get() = rethrow { js.key } diff --git a/firebase-database/src/jsMain/kotlin/dev/gitlive/firebase/database/externals/database.kt b/firebase-database/src/jsMain/kotlin/dev/gitlive/firebase/database/externals/database.kt index 52f71422b..a31739e3e 100644 --- a/firebase-database/src/jsMain/kotlin/dev/gitlive/firebase/database/externals/database.kt +++ b/firebase-database/src/jsMain/kotlin/dev/gitlive/firebase/database/externals/database.kt @@ -128,6 +128,7 @@ external interface DataSnapshot { val size: Int val ref: DatabaseReference fun `val`(): Any + fun exportVal(): Any fun exists(): Boolean fun forEach(action: (a: DataSnapshot) -> Boolean): Boolean fun child(path: String): DataSnapshot diff --git a/gradle.properties b/gradle.properties index d83e642a5..ed9774772 100644 --- a/gradle.properties +++ b/gradle.properties @@ -19,7 +19,7 @@ kotlin.mpp.enableCInteropCommonization=true kotlin.native.cacheKind=none # Set to true to skip tests and even compilation of the iOS target. -skipIosTarget=false +skipIosTarget=true # Skip iOS Tests firebase-app.skipIosTests=false # We are skipping auth ios tests due to an issue with keychain and simulator. @@ -47,17 +47,17 @@ firebase-perf.skipJsTests=false firebase-storage.skipJsTests=false # Versions: -firebase-app.version=1.11.1 -firebase-auth.version=1.11.1 -firebase-common.version=1.11.1 -firebase-config.version=1.11.1 -firebase-database.version=1.11.1 -firebase-firestore.version=1.11.1 -firebase-functions.version=1.11.1 -firebase-installations.version=1.11.1 -firebase-perf.version=1.11.1 -firebase-crashlytics.version=1.11.1 -firebase-storage.version=1.11.1 +firebase-app.version=1.11.2 +firebase-auth.version=1.11.2 +firebase-common.version=1.11.2 +firebase-config.version=1.11.2 +firebase-database.version=1.11.2 +firebase-firestore.version=1.11.2 +firebase-functions.version=1.11.2 +firebase-installations.version=1.11.2 +firebase-perf.version=1.11.2 +firebase-crashlytics.version=1.11.2 +firebase-storage.version=1.11.2 # Dependencies Versions: gradlePluginVersion=8.1.3