Skip to content

Commit 7ae508b

Browse files
committed
use any? for setValue
1 parent 160b4e0 commit 7ae508b

File tree

3 files changed

+7
-6
lines changed
  • firebase-database/src
    • androidMain/kotlin/dev/teamhub/firebase/database
    • commonMain/kotlin/dev/teamhub/firebase/database
    • jsMain/kotlin/dev/teamhub/firebase/database

3 files changed

+7
-6
lines changed

firebase-database/src/androidMain/kotlin/dev/teamhub/firebase/database/database.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ import kotlinx.coroutines.flow.callbackFlow
1212
import kotlinx.coroutines.tasks.await
1313
import kotlinx.serialization.DeserializationStrategy
1414
import kotlinx.serialization.SerializationStrategy
15-
import kotlinx.serialization.serializer
1615

1716
actual val Firebase.database
1817
get() = FirebaseDatabase(com.google.firebase.database.FirebaseDatabase.getInstance())
@@ -54,8 +53,8 @@ actual class DatabaseReference internal constructor(val android: com.google.fire
5453
awaitClose { android.removeEventListener(listener) }
5554
}
5655

57-
actual suspend inline fun <reified T : Any> setValue(value: T) =
58-
android.setValue(encode(T::class.serializer(), value)).await().run { Unit }
56+
actual suspend fun setValue(value: Any?) =
57+
android.setValue(encode(value)).await().run { Unit }
5958

6059
actual suspend inline fun <reified T> setValue(strategy: SerializationStrategy<T>, value: T) =
6160
android.setValue(encode(strategy, value)).await().run { Unit }

firebase-database/src/commonMain/kotlin/dev/teamhub/firebase/database/database.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ expect class DatabaseReference {
3030
fun onDisconnect(): OnDisconnect
3131
val snapshots: Flow<DataSnapshot>
3232
@ImplicitReflectionSerializer
33-
suspend inline fun <reified T: Any> setValue(value: T)
33+
suspend fun setValue(value: Any?)
3434
suspend inline fun <reified T> setValue(strategy: SerializationStrategy<T>, value: T)
3535
@ImplicitReflectionSerializer
3636
suspend fun updateChildren(update: Map<String, Any?>)

firebase-database/src/jsMain/kotlin/dev/teamhub/firebase/database/database.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import kotlinx.serialization.DynamicObjectParser
1111
import kotlinx.serialization.SerializationStrategy
1212
import kotlinx.serialization.json.Json
1313
import kotlinx.serialization.json.JsonConfiguration
14+
import kotlinx.serialization.modules.getContextualOrDefault
1415
import kotlinx.serialization.stringify
1516

1617
actual val Firebase.database
@@ -43,8 +44,9 @@ actual class DatabaseReference internal constructor(val js: firebase.database.Re
4344

4445
actual suspend fun removeValue() = rethrow { js.remove().await() }
4546

46-
actual suspend inline fun <reified T : Any> setValue(value: T) =
47-
rethrow { js.set(JSON.parse(json.stringify(value))).await() }
47+
actual suspend fun setValue(value: Any?) = rethrow {
48+
js.set(value?.let { JSON.parse<Any>(json.stringify(json.context.getContextualOrDefault(value), it)) }).await()
49+
}
4850

4951
actual suspend inline fun <reified T> setValue(strategy: SerializationStrategy<T>, value: T) =
5052
rethrow { js.set(JSON.parse(json.stringify(strategy, value))).await() }

0 commit comments

Comments
 (0)