From 6220163eb1397beeeac62dab630ae16fc5abc4b1 Mon Sep 17 00:00:00 2001 From: Andrew Reed Date: Wed, 28 Aug 2024 21:28:30 +0100 Subject: [PATCH 1/6] Added fixes for imports. --- .../kotlin/dev/gitlive/firebase/auth/credentials.kt | 5 ++--- .../firebase/firestore/internal/callbackExecutorMap.kt | 3 +-- .../kotlin/dev/gitlive/firebase/perf/metrics/Trace.kt | 5 +++-- .../kotlin/dev/gitlive/firebase/perf/performance.kt | 3 +-- .../kotlin/dev/gitlive/firebase/perf/session/PerfSession.kt | 6 ++---- 5 files changed, 9 insertions(+), 13 deletions(-) diff --git a/firebase-auth/src/androidMain/kotlin/dev/gitlive/firebase/auth/credentials.kt b/firebase-auth/src/androidMain/kotlin/dev/gitlive/firebase/auth/credentials.kt index 8c5b95978..c87f4af3e 100644 --- a/firebase-auth/src/androidMain/kotlin/dev/gitlive/firebase/auth/credentials.kt +++ b/firebase-auth/src/androidMain/kotlin/dev/gitlive/firebase/auth/credentials.kt @@ -6,7 +6,6 @@ package dev.gitlive.firebase.auth import android.app.Activity import com.google.firebase.FirebaseException -import com.google.firebase.auth.OAuthProvider import com.google.firebase.auth.PhoneAuthOptions import com.google.firebase.auth.PhoneAuthProvider import kotlinx.coroutines.CompletableDeferred @@ -52,9 +51,9 @@ public actual object GoogleAuthProvider { } } -public val OAuthProvider.android: OAuthProvider get() = android +public val OAuthProvider.android: com.google.firebase.auth.OAuthProvider get() = android -public actual class OAuthProvider(internal val android: OAuthProvider) { +public actual class OAuthProvider(internal val android: com.google.firebase.auth.OAuthProvider) { public actual constructor( provider: String, diff --git a/firebase-firestore/src/androidMain/kotlin/dev/gitlive/firebase/firestore/internal/callbackExecutorMap.kt b/firebase-firestore/src/androidMain/kotlin/dev/gitlive/firebase/firestore/internal/callbackExecutorMap.kt index a728f542c..386ef0505 100644 --- a/firebase-firestore/src/androidMain/kotlin/dev/gitlive/firebase/firestore/internal/callbackExecutorMap.kt +++ b/firebase-firestore/src/androidMain/kotlin/dev/gitlive/firebase/firestore/internal/callbackExecutorMap.kt @@ -1,8 +1,7 @@ package dev.gitlive.firebase.firestore.internal -import com.google.firebase.firestore.FirebaseFirestore import java.util.concurrent.ConcurrentHashMap import java.util.concurrent.Executor // Since on iOS Callback threads are set as settings, we store the settings explicitly here as well -internal val callbackExecutorMap = ConcurrentHashMap() +internal val callbackExecutorMap = ConcurrentHashMap() diff --git a/firebase-perf/src/androidMain/kotlin/dev/gitlive/firebase/perf/metrics/Trace.kt b/firebase-perf/src/androidMain/kotlin/dev/gitlive/firebase/perf/metrics/Trace.kt index a4f373fc9..e79ce1fb0 100644 --- a/firebase-perf/src/androidMain/kotlin/dev/gitlive/firebase/perf/metrics/Trace.kt +++ b/firebase-perf/src/androidMain/kotlin/dev/gitlive/firebase/perf/metrics/Trace.kt @@ -1,9 +1,10 @@ package dev.gitlive.firebase.perf.metrics -import com.google.firebase.perf.metrics.Trace import dev.gitlive.firebase.perf.session.PerfSession -public actual class Trace internal constructor(private val android: Trace) { +public val Trace.android: com.google.firebase.perf.metrics.Trace get() = android + +public actual class Trace internal constructor(internal val android: com.google.firebase.perf.metrics.Trace) { public actual fun start() { android.start() diff --git a/firebase-perf/src/androidMain/kotlin/dev/gitlive/firebase/perf/performance.kt b/firebase-perf/src/androidMain/kotlin/dev/gitlive/firebase/perf/performance.kt index ca6e00675..a4e4d3d47 100644 --- a/firebase-perf/src/androidMain/kotlin/dev/gitlive/firebase/perf/performance.kt +++ b/firebase-perf/src/androidMain/kotlin/dev/gitlive/firebase/perf/performance.kt @@ -1,6 +1,5 @@ package dev.gitlive.firebase.perf -import com.google.firebase.FirebaseException import dev.gitlive.firebase.Firebase import dev.gitlive.firebase.FirebaseApp import dev.gitlive.firebase.android as publicAndroid @@ -25,4 +24,4 @@ public actual class FirebasePerformance(internal val android: com.google.firebas } } -public actual open class FirebasePerformanceException(message: String) : FirebaseException(message) +public actual open class FirebasePerformanceException(message: String) : com.google.firebase.FirebaseException(message) diff --git a/firebase-perf/src/androidMain/kotlin/dev/gitlive/firebase/perf/session/PerfSession.kt b/firebase-perf/src/androidMain/kotlin/dev/gitlive/firebase/perf/session/PerfSession.kt index cc3ad8d02..9e3925596 100644 --- a/firebase-perf/src/androidMain/kotlin/dev/gitlive/firebase/perf/session/PerfSession.kt +++ b/firebase-perf/src/androidMain/kotlin/dev/gitlive/firebase/perf/session/PerfSession.kt @@ -1,7 +1,5 @@ package dev.gitlive.firebase.perf.session -import com.google.firebase.perf.session.PerfSession +public val PerfSession.android: com.google.firebase.perf.session.PerfSession get() = android -public val PerfSession.android: PerfSession get() = android - -public class PerfSession internal constructor(internal val android: PerfSession) +public class PerfSession internal constructor(internal val android: com.google.firebase.perf.session.PerfSession) From 2f56a62966fb35348bc78cbd7186640b5d63c723 Mon Sep 17 00:00:00 2001 From: Andrew Reed Date: Wed, 28 Aug 2024 21:33:09 +0100 Subject: [PATCH 2/6] Adjusted api dump. --- firebase-auth/api/android/firebase-auth.api | 2 +- .../kotlin/dev/gitlive/firebase/auth/credentials.kt | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/firebase-auth/api/android/firebase-auth.api b/firebase-auth/api/android/firebase-auth.api index 2b74dac8b..a5ac17791 100644 --- a/firebase-auth/api/android/firebase-auth.api +++ b/firebase-auth/api/android/firebase-auth.api @@ -85,7 +85,7 @@ public final class dev/gitlive/firebase/auth/AuthTokenResult { } public final class dev/gitlive/firebase/auth/CredentialsKt { - public static final fun getAndroid (Lcom/google/firebase/auth/OAuthProvider;)Lcom/google/firebase/auth/OAuthProvider; + public static final fun getAndroid (Ldev/gitlive/firebase/auth/OAuthProvider;)Lcom/google/firebase/auth/OAuthProvider; } public final class dev/gitlive/firebase/auth/EmailAuthProvider { diff --git a/firebase-auth/src/androidMain/kotlin/dev/gitlive/firebase/auth/credentials.kt b/firebase-auth/src/androidMain/kotlin/dev/gitlive/firebase/auth/credentials.kt index c87f4af3e..d8bf01360 100644 --- a/firebase-auth/src/androidMain/kotlin/dev/gitlive/firebase/auth/credentials.kt +++ b/firebase-auth/src/androidMain/kotlin/dev/gitlive/firebase/auth/credentials.kt @@ -61,7 +61,7 @@ public actual class OAuthProvider(internal val android: com.google.firebase.auth customParameters: Map, auth: FirebaseAuth, ) : this( - OAuthProvider + com.google.firebase.auth.OAuthProvider .newBuilder(provider, auth.android) .setScopes(scopes) .addCustomParameters(customParameters) @@ -70,7 +70,7 @@ public actual class OAuthProvider(internal val android: com.google.firebase.auth public actual companion object { public actual fun credential(providerId: String, accessToken: String?, idToken: String?, rawNonce: String?): OAuthCredential { - val builder = OAuthProvider.newCredentialBuilder(providerId) + val builder = com.google.firebase.auth.OAuthProvider.newCredentialBuilder(providerId) accessToken?.let { builder.setAccessToken(it) } idToken?.let { builder.setIdToken(it) } rawNonce?.let { builder.setIdTokenWithRawNonce(idToken!!, it) } From a033138cf2552ed9f8435a53863e0d10dbf1318c Mon Sep 17 00:00:00 2001 From: Andrew Reed Date: Thu, 29 Aug 2024 08:12:46 +0100 Subject: [PATCH 3/6] Adjusted import to import as --- .../kotlin/dev/gitlive/firebase/auth/credentials.kt | 9 +++++---- firebase-perf/api/android/firebase-perf.api | 6 +++++- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/firebase-auth/src/androidMain/kotlin/dev/gitlive/firebase/auth/credentials.kt b/firebase-auth/src/androidMain/kotlin/dev/gitlive/firebase/auth/credentials.kt index d8bf01360..eec1b6d10 100644 --- a/firebase-auth/src/androidMain/kotlin/dev/gitlive/firebase/auth/credentials.kt +++ b/firebase-auth/src/androidMain/kotlin/dev/gitlive/firebase/auth/credentials.kt @@ -6,6 +6,7 @@ package dev.gitlive.firebase.auth import android.app.Activity import com.google.firebase.FirebaseException +import com.google.firebase.auth.OAuthProvider as AndroidOAuthProvider import com.google.firebase.auth.PhoneAuthOptions import com.google.firebase.auth.PhoneAuthProvider import kotlinx.coroutines.CompletableDeferred @@ -51,9 +52,9 @@ public actual object GoogleAuthProvider { } } -public val OAuthProvider.android: com.google.firebase.auth.OAuthProvider get() = android +public val OAuthProvider.android: AndroidOAuthProvider get() = android -public actual class OAuthProvider(internal val android: com.google.firebase.auth.OAuthProvider) { +public actual class OAuthProvider(internal val android: AndroidOAuthProvider) { public actual constructor( provider: String, @@ -61,7 +62,7 @@ public actual class OAuthProvider(internal val android: com.google.firebase.auth customParameters: Map, auth: FirebaseAuth, ) : this( - com.google.firebase.auth.OAuthProvider + AndroidOAuthProvider .newBuilder(provider, auth.android) .setScopes(scopes) .addCustomParameters(customParameters) @@ -70,7 +71,7 @@ public actual class OAuthProvider(internal val android: com.google.firebase.auth public actual companion object { public actual fun credential(providerId: String, accessToken: String?, idToken: String?, rawNonce: String?): OAuthCredential { - val builder = com.google.firebase.auth.OAuthProvider.newCredentialBuilder(providerId) + val builder = AndroidOAuthProvider.newCredentialBuilder(providerId) accessToken?.let { builder.setAccessToken(it) } idToken?.let { builder.setIdToken(it) } rawNonce?.let { builder.setIdTokenWithRawNonce(idToken!!, it) } diff --git a/firebase-perf/api/android/firebase-perf.api b/firebase-perf/api/android/firebase-perf.api index 135ca3ad0..9fe0d96ca 100644 --- a/firebase-perf/api/android/firebase-perf.api +++ b/firebase-perf/api/android/firebase-perf.api @@ -28,10 +28,14 @@ public final class dev/gitlive/firebase/perf/metrics/Trace { public final fun updateSession (Ldev/gitlive/firebase/perf/session/PerfSession;)V } +public final class dev/gitlive/firebase/perf/metrics/TraceKt { + public static final fun getAndroid (Ldev/gitlive/firebase/perf/metrics/Trace;)Lcom/google/firebase/perf/metrics/Trace; +} + public final class dev/gitlive/firebase/perf/session/PerfSession { } public final class dev/gitlive/firebase/perf/session/PerfSessionKt { - public static final fun getAndroid (Lcom/google/firebase/perf/session/PerfSession;)Lcom/google/firebase/perf/session/PerfSession; + public static final fun getAndroid (Ldev/gitlive/firebase/perf/session/PerfSession;)Lcom/google/firebase/perf/session/PerfSession; } From 1ad7fef1a07b3c84e4d813c6cf3fd6c0edb7a466 Mon Sep 17 00:00:00 2001 From: Andrew Reed Date: Thu, 29 Aug 2024 08:18:30 +0100 Subject: [PATCH 4/6] Added import as Platform --- .../kotlin/dev/gitlive/firebase/perf/metrics/Trace.kt | 6 ++++-- .../kotlin/dev/gitlive/firebase/perf/session/PerfSession.kt | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/firebase-perf/src/androidMain/kotlin/dev/gitlive/firebase/perf/metrics/Trace.kt b/firebase-perf/src/androidMain/kotlin/dev/gitlive/firebase/perf/metrics/Trace.kt index e79ce1fb0..c905d4975 100644 --- a/firebase-perf/src/androidMain/kotlin/dev/gitlive/firebase/perf/metrics/Trace.kt +++ b/firebase-perf/src/androidMain/kotlin/dev/gitlive/firebase/perf/metrics/Trace.kt @@ -1,10 +1,12 @@ package dev.gitlive.firebase.perf.metrics +import com.google.firebase.perf.metrics.Trace as AndroidTrace import dev.gitlive.firebase.perf.session.PerfSession -public val Trace.android: com.google.firebase.perf.metrics.Trace get() = android -public actual class Trace internal constructor(internal val android: com.google.firebase.perf.metrics.Trace) { +public val Trace.android: AndroidTrace get() = android + +public actual class Trace internal constructor(internal val android: AndroidTrace) { public actual fun start() { android.start() diff --git a/firebase-perf/src/androidMain/kotlin/dev/gitlive/firebase/perf/session/PerfSession.kt b/firebase-perf/src/androidMain/kotlin/dev/gitlive/firebase/perf/session/PerfSession.kt index 9e3925596..a861992a6 100644 --- a/firebase-perf/src/androidMain/kotlin/dev/gitlive/firebase/perf/session/PerfSession.kt +++ b/firebase-perf/src/androidMain/kotlin/dev/gitlive/firebase/perf/session/PerfSession.kt @@ -1,5 +1,7 @@ package dev.gitlive.firebase.perf.session -public val PerfSession.android: com.google.firebase.perf.session.PerfSession get() = android +import com.google.firebase.perf.session.PerfSession as AndroidPerfSession -public class PerfSession internal constructor(internal val android: com.google.firebase.perf.session.PerfSession) +public val PerfSession.android: AndroidPerfSession get() = android + +public class PerfSession internal constructor(internal val android: AndroidPerfSession) From 8310e6cbfb878809bd4d542756f7c5d8fc68c79f Mon Sep 17 00:00:00 2001 From: Reedyuk Date: Thu, 29 Aug 2024 07:20:50 +0000 Subject: [PATCH 5/6] Apply automatic changes --- .../kotlin/dev/gitlive/firebase/perf/metrics/Trace.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/firebase-perf/src/androidMain/kotlin/dev/gitlive/firebase/perf/metrics/Trace.kt b/firebase-perf/src/androidMain/kotlin/dev/gitlive/firebase/perf/metrics/Trace.kt index c905d4975..dca1211cc 100644 --- a/firebase-perf/src/androidMain/kotlin/dev/gitlive/firebase/perf/metrics/Trace.kt +++ b/firebase-perf/src/androidMain/kotlin/dev/gitlive/firebase/perf/metrics/Trace.kt @@ -3,7 +3,6 @@ package dev.gitlive.firebase.perf.metrics import com.google.firebase.perf.metrics.Trace as AndroidTrace import dev.gitlive.firebase.perf.session.PerfSession - public val Trace.android: AndroidTrace get() = android public actual class Trace internal constructor(internal val android: AndroidTrace) { From 8e2d6a0aa62d15b604dfc621a19ed1ef93a84aa7 Mon Sep 17 00:00:00 2001 From: Andrew Reed Date: Thu, 29 Aug 2024 08:43:53 +0000 Subject: [PATCH 6/6] Adjusted readme --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 71bb394dd..842a36cb7 100644 --- a/README.md +++ b/README.md @@ -329,4 +329,3 @@ More recently, with the official SDK for Android providing better support for Ko For contributors this means following these points when adding new code to the public API of this project: - **Match the [Android SDKs API](https://firebase.google.com/docs/reference/kotlin/packages).** When adding new API coverage use the Android SDK as the guide on what the public API should be in regard to naming, parameters etc. The goal here is *near binary compatibility*, meaning code consuming the Android SDK compiles *as is* with the Kotlin SDK after just changing the package imports from `com.google` to `dev.gitlive`. - **Follow our [Kotlin-first design](https://github.com/GitLiveApp/firebase-kotlin-sdk/?tab=readme-ov-file#kotlin-first-design) principles when needed.** If the API you are adding coverage for is new, and it's Kotlin-first in the Android SDK, then you can simply just match the Android SDKs API as described in the first point, but if it's an older Java-first API then ideally we would include an identical API for API compatibility *plus* a Kotlin-first overload. A good example for this is where the Builder pattern is employed in the Android SDK, here we can follow [this Kotlin-first design principle](https://github.com/GitLiveApp/firebase-kotlin-sdk/?tab=readme-ov-file#default-arguments) and provide both methods, one taking the options created with the builder and an overload with default arguments to avoid the builder boilerplate for developers not porting an existing android code base. -