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. - 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 8c5b95978..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,7 +6,7 @@ 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.OAuthProvider as AndroidOAuthProvider import com.google.firebase.auth.PhoneAuthOptions import com.google.firebase.auth.PhoneAuthProvider import kotlinx.coroutines.CompletableDeferred @@ -52,9 +52,9 @@ public actual object GoogleAuthProvider { } } -public val OAuthProvider.android: OAuthProvider get() = android +public val OAuthProvider.android: AndroidOAuthProvider get() = android -public actual class OAuthProvider(internal val android: OAuthProvider) { +public actual class OAuthProvider(internal val android: AndroidOAuthProvider) { public actual constructor( provider: String, @@ -62,7 +62,7 @@ public actual class OAuthProvider(internal val android: OAuthProvider) { customParameters: Map, auth: FirebaseAuth, ) : this( - OAuthProvider + AndroidOAuthProvider .newBuilder(provider, auth.android) .setScopes(scopes) .addCustomParameters(customParameters) @@ -71,7 +71,7 @@ public actual class OAuthProvider(internal val android: OAuthProvider) { public actual companion object { public actual fun credential(providerId: String, accessToken: String?, idToken: String?, rawNonce: String?): OAuthCredential { - val builder = 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-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/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; } 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..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 @@ -1,9 +1,11 @@ package dev.gitlive.firebase.perf.metrics -import com.google.firebase.perf.metrics.Trace +import com.google.firebase.perf.metrics.Trace as AndroidTrace import dev.gitlive.firebase.perf.session.PerfSession -public actual class Trace internal constructor(private val android: 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/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..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,7 +1,7 @@ package dev.gitlive.firebase.perf.session -import com.google.firebase.perf.session.PerfSession +import com.google.firebase.perf.session.PerfSession as AndroidPerfSession -public val PerfSession.android: PerfSession get() = android +public val PerfSession.android: AndroidPerfSession get() = android -public class PerfSession internal constructor(internal val android: PerfSession) +public class PerfSession internal constructor(internal val android: AndroidPerfSession)