-
Notifications
You must be signed in to change notification settings - Fork 168
/
Copy pathfirebase.kt
50 lines (38 loc) · 1.89 KB
/
firebase.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
/*
* Copyright (c) 2020 GitLive Ltd. Use of this source code is governed by the Apache 2.0 license.
*/
package dev.gitlive.firebase
import cocoapods.FirebaseCore.*
import kotlinx.coroutines.CompletableDeferred
actual open class FirebaseException(message: String) : Exception(message)
actual open class FirebaseNetworkException(message: String) : FirebaseException(message)
actual open class FirebaseTooManyRequestsException(message: String) : FirebaseException(message)
actual open class FirebaseApiNotAvailableException(message: String) : FirebaseException(message)
actual val Firebase.app: FirebaseApp
get() = FirebaseApp(FIRApp.defaultApp()!!)
actual fun Firebase.app(name: String): FirebaseApp =
FirebaseApp(FIRApp.appNamed(name)!!)
actual fun Firebase.initialize(context: Any?): FirebaseApp? =
FIRApp.configure().let { app }
actual fun Firebase.initialize(context: Any?, options: FirebaseOptions, name: String): FirebaseApp =
FIRApp.configureWithName(name, options.toIos()).let { app(name) }
actual fun Firebase.initialize(context: Any?, options: FirebaseOptions) =
FIRApp.configureWithOptions(options.toIos()).let { app }
actual class FirebaseApp internal constructor(val ios: FIRApp) {
actual val name: String
get() = ios.name
actual val options: FirebaseOptions
get() = ios.options.run { FirebaseOptions(bundleID, APIKey!!, databaseURL!!, trackingID, storageBucket, projectID) }
actual fun delete() { }
}
actual fun Firebase.apps(context: Any?) = FIRApp.allApps()
.orEmpty()
.values
.map { FirebaseApp(it as FIRApp) }
private fun FirebaseOptions.toIos() = FIROptions([email protected], [email protected] ?: "").apply {
APIKey = [email protected]
databaseURL = [email protected]
trackingID = [email protected]
storageBucket = [email protected]
projectID = [email protected]
}