Skip to content

Commit

Permalink
Merge pull request #504 from GitLiveApp/make-android-ios-js-propertie…
Browse files Browse the repository at this point in the history
…s-extensions

[BREAKING CHANGE] refactor .js, .android, .ios properties extensions
  • Loading branch information
nbransby authored Aug 23, 2024
2 parents 70d0514 + b761a67 commit 5817981
Show file tree
Hide file tree
Showing 87 changed files with 548 additions and 263 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -259,7 +259,7 @@ It uses the <a href="https://github.com/GitLiveApp/firebase-java-sdk">Firebase J

### Accessing the underlying Firebase SDK

In some cases you might want to access the underlying official Firebase SDK in platform specific code, for example when the common API is missing the functionality you need. For this purpose each class in the SDK has `android`, `ios` and `js` properties which holds the equivalent object of the underlying official Firebase SDK. For *JVM*, as the `firebase-java-sdk` is a direct port of the Firebase Android SDK, is it also accessed via the `android` property.
In some cases you might want to access the underlying official Firebase SDK in platform specific code, for example when the common API is missing the functionality you need. For this purpose each class in the SDK has `android`, `ios` and `js` extension properties that hold the equivalent object of the underlying official Firebase SDK. For *JVM*, as the `firebase-java-sdk` is a direct port of the Firebase Android SDK, is it also accessed via the `android` property.

These properties are only accessible from the equivalent target's source set. For example to disable persistence in Cloud Firestore on Android you can write the following in your Android specific code (e.g. `androidMain` or `androidTest`):

Expand Down
2 changes: 1 addition & 1 deletion firebase-analytics/api/android/firebase-analytics.api
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ public final class dev/gitlive/firebase/analytics/AnalyticsKt {

public final class dev/gitlive/firebase/analytics/FirebaseAnalytics {
public fun <init> (Lcom/google/firebase/analytics/FirebaseAnalytics;)V
public final fun getAndroid ()Lcom/google/firebase/analytics/FirebaseAnalytics;
public final fun getSessionId (Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
public final fun logEvent (Ljava/lang/String;Ljava/util/Map;)V
public static synthetic fun logEvent$default (Ldev/gitlive/firebase/analytics/FirebaseAnalytics;Ljava/lang/String;Ljava/util/Map;ILjava/lang/Object;)V
Expand Down Expand Up @@ -207,5 +206,6 @@ public final class dev/gitlive/firebase/analytics/FirebaseAnalyticsUserProperty
public final class dev/gitlive/firebase/analytics/analyticsAndroid {
public static final fun analytics (Ldev/gitlive/firebase/Firebase;Ldev/gitlive/firebase/FirebaseApp;)Ldev/gitlive/firebase/analytics/FirebaseAnalytics;
public static final fun getAnalytics (Ldev/gitlive/firebase/Firebase;)Ldev/gitlive/firebase/analytics/FirebaseAnalytics;
public static final fun getAndroid (Ldev/gitlive/firebase/analytics/FirebaseAnalytics;)Lcom/google/firebase/analytics/FirebaseAnalytics;
}

4 changes: 2 additions & 2 deletions firebase-analytics/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@gitlive/firebase-analytics",
"version": "1.13.0",
"version": "2.0.0",
"description": "Wrapper around firebase for usage in Kotlin Multiplatform projects",
"main": "firebase-analytics.js",
"scripts": {
Expand All @@ -23,7 +23,7 @@
},
"homepage": "https://github.com/GitLiveApp/firebase-kotlin-sdk",
"dependencies": {
"@gitlive/firebase-app": "1.13.0",
"@gitlive/firebase-app": "2.0.0",
"firebase": "9.19.1",
"kotlin": "1.6.10",
"kotlinx-coroutines-core": "1.6.1-native-mt"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,9 @@ public actual val Firebase.analytics: FirebaseAnalytics
public actual fun Firebase.analytics(app: FirebaseApp): FirebaseAnalytics =
FirebaseAnalytics(com.google.firebase.Firebase.analytics)

public actual class FirebaseAnalytics(public val android: com.google.firebase.analytics.FirebaseAnalytics) {
public val FirebaseAnalytics.android: com.google.firebase.analytics.FirebaseAnalytics get() = android

public actual class FirebaseAnalytics(internal val android: com.google.firebase.analytics.FirebaseAnalytics) {
public actual fun logEvent(name: String, parameters: Map<String, Any>?) {
android.logEvent(name, parameters?.toBundle())
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,9 @@ public actual val Firebase.analytics: FirebaseAnalytics

public actual fun Firebase.analytics(app: FirebaseApp): FirebaseAnalytics = FirebaseAnalytics(FIRAnalytics)

public actual class FirebaseAnalytics(public val ios: FIRAnalytics.Companion) {
public val FirebaseAnalytics.ios: FIRAnalytics.Companion get() = ios

public actual class FirebaseAnalytics(internal val ios: FIRAnalytics.Companion) {
public actual fun logEvent(name: String, parameters: Map<String, Any>?) {
val mappedParameters: Map<Any?, Any>? = parameters?.map { it.key to it.value }?.toMap()
ios.logEventWithName(name, mappedParameters)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import dev.gitlive.firebase.Firebase
import dev.gitlive.firebase.FirebaseApp
import dev.gitlive.firebase.FirebaseException
import dev.gitlive.firebase.analytics.externals.getAnalytics
import dev.gitlive.firebase.js
import kotlinx.coroutines.await
import kotlin.time.Duration

Expand All @@ -13,7 +14,9 @@ public actual val Firebase.analytics: FirebaseAnalytics
public actual fun Firebase.analytics(app: FirebaseApp): FirebaseAnalytics =
FirebaseAnalytics(getAnalytics(app.js))

public actual class FirebaseAnalytics(public val js: dev.gitlive.firebase.analytics.externals.FirebaseAnalytics) {
public val FirebaseAnalytics.js: dev.gitlive.firebase.analytics.externals.FirebaseAnalytics get() = js

public actual class FirebaseAnalytics(internal val js: dev.gitlive.firebase.analytics.externals.FirebaseAnalytics) {
public actual fun logEvent(
name: String,
parameters: Map<String, Any>?,
Expand Down
3 changes: 1 addition & 2 deletions firebase-app/api/android/firebase-app.api
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,10 @@ public final class dev/gitlive/firebase/Firebase {
}

public final class dev/gitlive/firebase/FirebaseApp {
public final fun component1 ()Lcom/google/firebase/FirebaseApp;
public final fun copy (Lcom/google/firebase/FirebaseApp;)Ldev/gitlive/firebase/FirebaseApp;
public static synthetic fun copy$default (Ldev/gitlive/firebase/FirebaseApp;Lcom/google/firebase/FirebaseApp;ILjava/lang/Object;)Ldev/gitlive/firebase/FirebaseApp;
public final fun delete (Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
public fun equals (Ljava/lang/Object;)Z
public final fun getAndroid ()Lcom/google/firebase/FirebaseApp;
public final fun getName ()Ljava/lang/String;
public final fun getOptions ()Ldev/gitlive/firebase/FirebaseOptions;
public fun hashCode ()I
Expand All @@ -23,6 +21,7 @@ public final class dev/gitlive/firebase/FirebaseKt {
public static final fun app (Ldev/gitlive/firebase/Firebase;Ljava/lang/String;)Ldev/gitlive/firebase/FirebaseApp;
public static final fun apps (Ldev/gitlive/firebase/Firebase;Ljava/lang/Object;)Ljava/util/List;
public static synthetic fun apps$default (Ldev/gitlive/firebase/Firebase;Ljava/lang/Object;ILjava/lang/Object;)Ljava/util/List;
public static final fun getAndroid (Ldev/gitlive/firebase/FirebaseApp;)Lcom/google/firebase/FirebaseApp;
public static final fun getApp (Ldev/gitlive/firebase/Firebase;)Ldev/gitlive/firebase/FirebaseApp;
public static final fun initialize (Ldev/gitlive/firebase/Firebase;Ljava/lang/Object;)Ldev/gitlive/firebase/FirebaseApp;
public static final fun initialize (Ldev/gitlive/firebase/Firebase;Ljava/lang/Object;Ldev/gitlive/firebase/FirebaseOptions;)Ldev/gitlive/firebase/FirebaseApp;
Expand Down
3 changes: 1 addition & 2 deletions firebase-app/api/jvm/firebase-app.api
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,10 @@ public final class dev/gitlive/firebase/Firebase {
}

public final class dev/gitlive/firebase/FirebaseApp {
public final fun component1 ()Lcom/google/firebase/FirebaseApp;
public final fun copy (Lcom/google/firebase/FirebaseApp;)Ldev/gitlive/firebase/FirebaseApp;
public static synthetic fun copy$default (Ldev/gitlive/firebase/FirebaseApp;Lcom/google/firebase/FirebaseApp;ILjava/lang/Object;)Ldev/gitlive/firebase/FirebaseApp;
public final fun delete (Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
public fun equals (Ljava/lang/Object;)Z
public final fun getAndroid ()Lcom/google/firebase/FirebaseApp;
public final fun getName ()Ljava/lang/String;
public final fun getOptions ()Ldev/gitlive/firebase/FirebaseOptions;
public fun hashCode ()I
Expand All @@ -23,6 +21,7 @@ public final class dev/gitlive/firebase/FirebaseKt {
public static final fun app (Ldev/gitlive/firebase/Firebase;Ljava/lang/String;)Ldev/gitlive/firebase/FirebaseApp;
public static final fun apps (Ldev/gitlive/firebase/Firebase;Ljava/lang/Object;)Ljava/util/List;
public static synthetic fun apps$default (Ldev/gitlive/firebase/Firebase;Ljava/lang/Object;ILjava/lang/Object;)Ljava/util/List;
public static final fun getAndroid (Ldev/gitlive/firebase/FirebaseApp;)Lcom/google/firebase/FirebaseApp;
public static final fun getApp (Ldev/gitlive/firebase/Firebase;)Ldev/gitlive/firebase/FirebaseApp;
public static final fun initialize (Ldev/gitlive/firebase/Firebase;Ljava/lang/Object;)Ldev/gitlive/firebase/FirebaseApp;
public static final fun initialize (Ldev/gitlive/firebase/Firebase;Ljava/lang/Object;Ldev/gitlive/firebase/FirebaseOptions;)Ldev/gitlive/firebase/FirebaseApp;
Expand Down
4 changes: 2 additions & 2 deletions firebase-app/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@gitlive/firebase-app",
"version": "1.13.0",
"version": "2.0.0",
"description": "Wrapper around firebase for usage in Kotlin Multiplatform projects",
"main": "firebase-app.js",
"scripts": {
Expand All @@ -23,7 +23,7 @@
},
"homepage": "https://github.com/GitLiveApp/firebase-kotlin-sdk",
"dependencies": {
"@gitlive/firebase-common": "1.13.0",
"@gitlive/firebase-common": "2.0.0",
"firebase": "9.19.1",
"kotlin": "1.8.20",
"kotlinx-coroutines-core": "1.6.4"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ public actual typealias FirebaseTooManyRequestsException = com.google.firebase.F

public actual typealias FirebaseApiNotAvailableException = com.google.firebase.FirebaseApiNotAvailableException

public val FirebaseApp.android: com.google.firebase.FirebaseApp get() = android

public actual val Firebase.app: FirebaseApp
get() = FirebaseApp(com.google.firebase.FirebaseApp.getInstance())

Expand All @@ -29,7 +31,7 @@ public actual fun Firebase.initialize(context: Any?, options: FirebaseOptions, n
public actual fun Firebase.initialize(context: Any?, options: FirebaseOptions): FirebaseApp =
FirebaseApp(com.google.firebase.FirebaseApp.initializeApp(context as Context, options.toAndroid()))

public actual data class FirebaseApp internal constructor(val android: com.google.firebase.FirebaseApp) {
public actual data class FirebaseApp internal constructor(internal val android: com.google.firebase.FirebaseApp) {
actual val name: String
get() = android.name
actual val options: FirebaseOptions
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ public actual open class FirebaseNetworkException(message: String) : FirebaseExc
public actual open class FirebaseTooManyRequestsException(message: String) : FirebaseException(message)
public actual open class FirebaseApiNotAvailableException(message: String) : FirebaseException(message)

public val FirebaseApp.ios: FIRApp get() = ios

public actual val Firebase.app: FirebaseApp
get() = FirebaseApp(FIRApp.defaultApp()!!)

Expand All @@ -27,7 +29,7 @@ public actual fun Firebase.initialize(context: Any?, options: FirebaseOptions, n
public actual fun Firebase.initialize(context: Any?, options: FirebaseOptions): FirebaseApp =
FIRApp.configureWithOptions(options.toIos()).let { app }

public actual data class FirebaseApp internal constructor(val ios: FIRApp) {
public actual data class FirebaseApp internal constructor(internal val ios: FIRApp) {
actual val name: String
get() = ios.name
actual val options: FirebaseOptions
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,9 @@ public actual fun Firebase.initialize(context: Any?, options: FirebaseOptions, n
public actual fun Firebase.initialize(context: Any?, options: FirebaseOptions): FirebaseApp =
FirebaseApp(initializeApp(options.toJson()))

public actual class FirebaseApp internal constructor(public val js: JsFirebaseApp) {
public val FirebaseApp.js: JsFirebaseApp get() = js

public actual class FirebaseApp internal constructor(internal val js: JsFirebaseApp) {
public actual val name: String
get() = js.name
public actual val options: FirebaseOptions
Expand Down
33 changes: 21 additions & 12 deletions firebase-auth/api/android/firebase-auth.api
Original file line number Diff line number Diff line change
Expand Up @@ -74,18 +74,20 @@ public class dev/gitlive/firebase/auth/AuthCredential {
}

public final class dev/gitlive/firebase/auth/AuthResult {
public final fun getAndroid ()Lcom/google/firebase/auth/AuthResult;
public final fun getUser ()Ldev/gitlive/firebase/auth/FirebaseUser;
}

public final class dev/gitlive/firebase/auth/AuthTokenResult {
public fun <init> (Lcom/google/firebase/auth/GetTokenResult;)V
public final fun getAndroid ()Lcom/google/firebase/auth/GetTokenResult;
public final fun getClaims ()Ljava/util/Map;
public final fun getSignInProvider ()Ljava/lang/String;
public final fun getToken ()Ljava/lang/String;
}

public final class dev/gitlive/firebase/auth/CredentialsKt {
public static final fun getAndroid (Lcom/google/firebase/auth/OAuthProvider;)Lcom/google/firebase/auth/OAuthProvider;
}

public final class dev/gitlive/firebase/auth/EmailAuthProvider {
public static final field INSTANCE Ldev/gitlive/firebase/auth/EmailAuthProvider;
public final fun credential (Ljava/lang/String;Ljava/lang/String;)Ldev/gitlive/firebase/auth/AuthCredential;
Expand All @@ -103,7 +105,6 @@ public final class dev/gitlive/firebase/auth/FirebaseAuth {
public final fun confirmPasswordReset (Ljava/lang/String;Ljava/lang/String;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
public final fun createUserWithEmailAndPassword (Ljava/lang/String;Ljava/lang/String;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
public final fun fetchSignInMethodsForEmail (Ljava/lang/String;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
public final fun getAndroid ()Lcom/google/firebase/auth/FirebaseAuth;
public final fun getAuthStateChanged ()Lkotlinx/coroutines/flow/Flow;
public final fun getCurrentUser ()Ldev/gitlive/firebase/auth/FirebaseUser;
public final fun getIdTokenChanged ()Lkotlinx/coroutines/flow/Flow;
Expand All @@ -126,7 +127,6 @@ public final class dev/gitlive/firebase/auth/FirebaseAuth {

public final class dev/gitlive/firebase/auth/FirebaseUser {
public final fun delete (Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
public final fun getAndroid ()Lcom/google/firebase/auth/FirebaseUser;
public final fun getDisplayName ()Ljava/lang/String;
public final fun getEmail ()Ljava/lang/String;
public final fun getIdToken (ZLkotlin/coroutines/Continuation;)Ljava/lang/Object;
Expand Down Expand Up @@ -169,7 +169,6 @@ public final class dev/gitlive/firebase/auth/GoogleAuthProvider {
public final class dev/gitlive/firebase/auth/MultiFactor {
public fun <init> (Lcom/google/firebase/auth/MultiFactor;)V
public final fun enroll (Ldev/gitlive/firebase/auth/MultiFactorAssertion;Ljava/lang/String;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
public final fun getAndroid ()Lcom/google/firebase/auth/MultiFactor;
public final fun getEnrolledFactors ()Ljava/util/List;
public final fun getSession (Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
public final fun unenroll (Ldev/gitlive/firebase/auth/MultiFactorInfo;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
Expand All @@ -178,13 +177,11 @@ public final class dev/gitlive/firebase/auth/MultiFactor {

public final class dev/gitlive/firebase/auth/MultiFactorAssertion {
public fun <init> (Lcom/google/firebase/auth/MultiFactorAssertion;)V
public final fun getAndroid ()Lcom/google/firebase/auth/MultiFactorAssertion;
public final fun getFactorId ()Ljava/lang/String;
}

public final class dev/gitlive/firebase/auth/MultiFactorInfo {
public fun <init> (Lcom/google/firebase/auth/MultiFactorInfo;)V
public final fun getAndroid ()Lcom/google/firebase/auth/MultiFactorInfo;
public final fun getDisplayName ()Ljava/lang/String;
public final fun getEnrollmentTime ()D
public final fun getFactorId ()Ljava/lang/String;
Expand All @@ -193,7 +190,6 @@ public final class dev/gitlive/firebase/auth/MultiFactorInfo {

public final class dev/gitlive/firebase/auth/MultiFactorResolver {
public fun <init> (Lcom/google/firebase/auth/MultiFactorResolver;)V
public final fun getAndroid ()Lcom/google/firebase/auth/MultiFactorResolver;
public final fun getAuth ()Ldev/gitlive/firebase/auth/FirebaseAuth;
public final fun getHints ()Ljava/util/List;
public final fun getSession ()Ldev/gitlive/firebase/auth/MultiFactorSession;
Expand All @@ -202,7 +198,14 @@ public final class dev/gitlive/firebase/auth/MultiFactorResolver {

public final class dev/gitlive/firebase/auth/MultiFactorSession {
public fun <init> (Lcom/google/firebase/auth/MultiFactorSession;)V
public final fun getAndroid ()Lcom/google/firebase/auth/MultiFactorSession;
}

public final class dev/gitlive/firebase/auth/MultifactorKt {
public static final fun getAndroid (Ldev/gitlive/firebase/auth/MultiFactor;)Lcom/google/firebase/auth/MultiFactor;
public static final fun getAndroid (Ldev/gitlive/firebase/auth/MultiFactorAssertion;)Lcom/google/firebase/auth/MultiFactorAssertion;
public static final fun getAndroid (Ldev/gitlive/firebase/auth/MultiFactorInfo;)Lcom/google/firebase/auth/MultiFactorInfo;
public static final fun getAndroid (Ldev/gitlive/firebase/auth/MultiFactorResolver;)Lcom/google/firebase/auth/MultiFactorResolver;
public static final fun getAndroid (Ldev/gitlive/firebase/auth/MultiFactorSession;)Lcom/google/firebase/auth/MultiFactorSession;
}

public final class dev/gitlive/firebase/auth/OAuthCredential : dev/gitlive/firebase/auth/AuthCredential {
Expand All @@ -216,7 +219,6 @@ public final class dev/gitlive/firebase/auth/OAuthProvider {
public fun <init> (Lcom/google/firebase/auth/OAuthProvider;)V
public fun <init> (Ljava/lang/String;Ljava/util/List;Ljava/util/Map;Ldev/gitlive/firebase/auth/FirebaseAuth;)V
public synthetic fun <init> (Ljava/lang/String;Ljava/util/List;Ljava/util/Map;Ldev/gitlive/firebase/auth/FirebaseAuth;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public final fun getAndroid ()Lcom/google/firebase/auth/OAuthProvider;
}

public final class dev/gitlive/firebase/auth/OAuthProvider$Companion {
Expand Down Expand Up @@ -254,7 +256,6 @@ public final class dev/gitlive/firebase/auth/TwitterAuthProvider {

public final class dev/gitlive/firebase/auth/UserInfo {
public fun <init> (Lcom/google/firebase/auth/UserInfo;)V
public final fun getAndroid ()Lcom/google/firebase/auth/UserInfo;
public final fun getDisplayName ()Ljava/lang/String;
public final fun getEmail ()Ljava/lang/String;
public final fun getPhoneNumber ()Ljava/lang/String;
Expand All @@ -263,15 +264,23 @@ public final class dev/gitlive/firebase/auth/UserInfo {
public final fun getUid ()Ljava/lang/String;
}

public final class dev/gitlive/firebase/auth/UserKt {
public static final fun getAndroid (Ldev/gitlive/firebase/auth/FirebaseUser;)Lcom/google/firebase/auth/FirebaseUser;
public static final fun getAndroid (Ldev/gitlive/firebase/auth/UserInfo;)Lcom/google/firebase/auth/UserInfo;
public static final fun getAndroid (Ldev/gitlive/firebase/auth/UserMetaData;)Lcom/google/firebase/auth/FirebaseUserMetadata;
}

public final class dev/gitlive/firebase/auth/UserMetaData {
public fun <init> (Lcom/google/firebase/auth/FirebaseUserMetadata;)V
public final fun getAndroid ()Lcom/google/firebase/auth/FirebaseUserMetadata;
public final fun getCreationTime ()Ljava/lang/Double;
public final fun getLastSignInTime ()Ljava/lang/Double;
}

public final class dev/gitlive/firebase/auth/android {
public static final fun auth (Ldev/gitlive/firebase/Firebase;Ldev/gitlive/firebase/FirebaseApp;)Ldev/gitlive/firebase/auth/FirebaseAuth;
public static final fun getAndroid (Ldev/gitlive/firebase/auth/AuthResult;)Lcom/google/firebase/auth/AuthResult;
public static final fun getAndroid (Ldev/gitlive/firebase/auth/AuthTokenResult;)Lcom/google/firebase/auth/GetTokenResult;
public static final fun getAndroid (Ldev/gitlive/firebase/auth/FirebaseAuth;)Lcom/google/firebase/auth/FirebaseAuth;
public static final fun getAuth (Ldev/gitlive/firebase/Firebase;)Ldev/gitlive/firebase/auth/FirebaseAuth;
}

Loading

0 comments on commit 5817981

Please sign in to comment.