Skip to content

Commit a9b9f33

Browse files
committed
Fixes after merging upstream master branch
1 parent 18364b3 commit a9b9f33

File tree

15 files changed

+92
-167
lines changed

15 files changed

+92
-167
lines changed

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
package dev.gitlive.firebase
66

7+
import dev.gitlive.firebase.externals.app.deleteApp
78
import dev.gitlive.firebase.externals.app.getApp
89
import dev.gitlive.firebase.externals.app.getApps
910
import dev.gitlive.firebase.externals.app.initializeApp
@@ -33,7 +34,9 @@ actual class FirebaseApp internal constructor(val js: JsFirebaseApp) {
3334
FirebaseOptions(appId, apiKey, databaseURL, gaTrackingId, storageBucket, projectId, messagingSenderId, authDomain)
3435
}
3536

36-
actual fun delete() = js.delete()
37+
actual fun delete() {
38+
deleteApp(js)
39+
}
3740
}
3841

3942
actual fun Firebase.apps(context: Any?) = getApps().map { FirebaseApp(it) }

firebase-common/src/jsMain/kotlin/dev/gitlive/firebase/externals/app/app.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,16 @@
33

44
package dev.gitlive.firebase.externals.app
55

6+
import kotlin.js.Promise
7+
68
external fun initializeApp(options: Any, name: String = definedExternally): FirebaseApp
79

810
external fun getApp(name: String = definedExternally): FirebaseApp
911

1012
external fun getApps(): Array<FirebaseApp>
1113

14+
external fun deleteApp(app: FirebaseApp): Promise<Unit>
15+
1216
external interface FirebaseApp {
1317
val automaticDataCollectionEnabled: Boolean
1418
val name: String

firebase-common/src/jsMain/kotlin/dev/gitlive/firebase/externals/database/database.kt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,12 @@ external fun startAt(value: Any?, key: String? = definedExternally): QueryConstr
9999

100100
external fun update(ref: DatabaseReference, values: Any): Promise<Unit>
101101

102+
external fun <T> runTransaction(
103+
ref: DatabaseReference,
104+
transactionUpdate: (currentData: T) -> T,
105+
options: Any? = definedExternally
106+
): Promise<TransactionResult>
107+
102108
external interface Database {
103109
val app: FirebaseApp
104110
}
@@ -132,3 +138,8 @@ external interface OnDisconnect {
132138
fun set(value: Any?): Promise<Unit>
133139
fun update(value: Any): Promise<Unit>
134140
}
141+
142+
external interface TransactionResult {
143+
val committed: Boolean
144+
val snapshot: DataSnapshot
145+
}

firebase-database/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ android {
2121
defaultConfig {
2222
minSdk = property("minSdkVersion") as Int
2323
targetSdk = property("targetSdkVersion") as Int
24+
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
2425
}
2526
sourceSets {
2627
getByName("main") {
@@ -143,4 +144,3 @@ signing {
143144
useInMemoryPgpKeys(signingKey, signingPassword)
144145
sign(publishing.publications)
145146
}
146-

firebase-database/src/androidAndroidTest/kotlin/dev/gitlive/firebase/database/database.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,9 @@
66
package dev.gitlive.firebase.database
77

88
import androidx.test.platform.app.InstrumentationRegistry
9+
import kotlinx.coroutines.test.TestResult
910

1011
actual val emulatorHost: String = "10.0.2.2"
1112

1213
actual val context: Any = InstrumentationRegistry.getInstrumentation().targetContext
13-
actual fun runTest(test: suspend () -> Unit) = kotlinx.coroutines.test.runTest { test() }
14+
actual fun runTest(test: suspend () -> Unit): TestResult = kotlinx.coroutines.test.runTest { test() }

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -264,4 +264,3 @@ actual class OnDisconnect internal constructor(
264264
}
265265

266266
actual typealias DatabaseException = com.google.firebase.database.DatabaseException
267-

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,4 +99,3 @@ expect class OnDisconnect {
9999
suspend fun <T> setValue(strategy: SerializationStrategy<T>, value: T, encodeDefaults: Boolean = true)
100100
suspend fun updateChildren(update: Map<String, Any?>, encodeDefaults: Boolean = true)
101101
}
102-

firebase-database/src/commonTest/kotlin/dev.gitlive.firebase.database/database.kt

Lines changed: 0 additions & 93 deletions
This file was deleted.

firebase-database/src/commonTest/kotlin/dev/gitlive/firebase/database/database.kt

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,19 @@ package dev.gitlive.firebase.database
22

33
import dev.gitlive.firebase.*
44
import kotlinx.coroutines.flow.first
5+
import kotlinx.coroutines.test.TestResult
56
import kotlinx.serialization.*
67
import kotlin.test.*
78

89
expect val emulatorHost: String
910
expect val context: Any
10-
expect fun runTest(test: suspend () -> Unit)
11+
expect fun runTest(test: suspend () -> Unit): TestResult
1112

1213
class FirebaseDatabaseTest {
1314

1415
@Serializable
1516
data class FirebaseDatabaseChildTest(val prop1: String? = null, val time: Double = 0.0)
1617

17-
@Serializable
18-
data class DatabaseTest(val title: String, val likes: Int = 0)
19-
2018
@BeforeTest
2119
fun initializeFirebase() {
2220
Firebase
@@ -138,4 +136,4 @@ class FirebaseDatabaseTest {
138136
}
139137
}
140138

141-
}
139+
}

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

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -151,21 +151,15 @@ actual class DatabaseReference internal constructor(override val js: JsDatabaseR
151151
actual suspend fun <T> setValue(strategy: SerializationStrategy<T>, value: T, encodeDefaults: Boolean) =
152152
rethrow { set(js, encode(strategy, value, encodeDefaults)).awaitWhileOnline() }
153153

154-
actual suspend fun <T> runTransaction(strategy: KSerializer<T>, transactionUpdate: (currentData: T) -> T): DataSnapshot {
155-
val deferred = CompletableDeferred<DataSnapshot>()
156-
js.transaction(
157-
transactionUpdate,
158-
{ error, _, snapshot ->
159-
if (error != null) {
160-
deferred.completeExceptionally(error)
161-
} else {
162-
deferred.complete(DataSnapshot(snapshot!!))
163-
}
164-
},
165-
applyLocally = false
166-
)
167-
return deferred.await()
168-
}
154+
actual suspend fun <T> runTransaction(strategy: KSerializer<T>, transactionUpdate: (currentData: T) -> T): DataSnapshot =
155+
rethrow {
156+
val result = dev.gitlive.firebase.externals.database.runTransaction(
157+
js,
158+
transactionUpdate,
159+
).awaitWhileOnline()
160+
161+
DataSnapshot(result.snapshot)
162+
}
169163
}
170164

171165
actual class DataSnapshot internal constructor(val js: JsDataSnapshot) {

0 commit comments

Comments
 (0)