Skip to content

Commit 9dbff12

Browse files
authored
Merge pull request #2 from TeamHubApp/ios-support
Ios support
2 parents 68d38cc + 7f332fb commit 9dbff12

File tree

21 files changed

+979
-7
lines changed

21 files changed

+979
-7
lines changed

.gitignore

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,9 @@
44
/.idea/
55
local.properties
66
/**/*.iml
7+
8+
firebase-app/src/iosMain/c_interop/modules/
9+
firebase-functions/src/iosMain/c_interop/modules/
10+
firebase-auth/src/iosMain/c_interop/modules/
11+
firebase-firestore/src/iosMain/c_interop/modules/
12+
firebase-database/src/iosMain/c_interop/modules/

build.gradle.kts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,13 @@ subprojects {
2828
jcenter()
2929
}
3030

31-
tasks.withType<KotlinCompile<*>> {
32-
kotlinOptions.freeCompilerArgs += listOf(
33-
"-Xuse-experimental=kotlin.Experimental",
34-
"-Xuse-experimental=kotlinx.coroutines.ExperimentalCoroutinesApi",
35-
"-Xuse-experimental=kotlinx.serialization.ImplicitReflectionSerializer"
36-
)
37-
}
31+
// tasks.withType<KotlinCompile<*>> {
32+
// kotlinOptions.freeCompilerArgs += listOf(
33+
// "-Xuse-experimental=kotlin.Experimental",
34+
// "-Xuse-experimental=kotlinx.coroutines.ExperimentalCoroutinesApi",
35+
// "-Xuse-experimental=kotlinx.serialization.ImplicitReflectionSerializer"
36+
// )
37+
// }
3838

3939
afterEvaluate {
4040
dependencies {

firebase-app/build.gradle.kts

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import org.apache.tools.ant.taskdefs.condition.Os
33
plugins {
44
id("com.android.library")
55
kotlin("multiplatform")
6+
kotlin("native.cocoapods")
67
`maven-publish`
78
}
89
repositories {
@@ -51,6 +52,9 @@ kotlin {
5152
}
5253
}
5354

55+
val iosArm64 = iosArm64()
56+
val iosX64 = iosX64()
57+
5458
sourceSets {
5559
val commonMain by getting {
5660
dependencies {
@@ -65,6 +69,28 @@ kotlin {
6569
val jvmMain by getting {
6670
kotlin.srcDir("src/androidMain/kotlin")
6771
}
72+
val iosMain by creating {
73+
dependencies {
74+
}
75+
}
76+
77+
configure(listOf(iosArm64, iosX64)) {
78+
compilations.getByName("main") {
79+
source(sourceSets.get("iosMain"))
80+
val firebasecore by cinterops.creating {
81+
packageName("cocoapods.FirebaseCore")
82+
defFile(file("$projectDir/src/iosMain/c_interop/FirebaseCore.def"))
83+
//includeDirs("$projectDir/../native/Avalon/Pods/FirebaseCore/Firebase/Core/Public")
84+
compilerOpts("-F$projectDir/src/iosMain/c_interop/modules/FirebaseCore-6.0.2")
85+
}
86+
}
87+
}
88+
89+
cocoapods {
90+
summary = ""
91+
homepage = ""
92+
//pod("FirebaseCore", "~> 6.3.1")
93+
}
6894
}
6995
}
7096

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
language = Objective-C
2+
modules = FirebaseCore
3+
compilerOpts = -framework FirebaseCore
4+
linkerOpts = -framework FirebaseCore
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package dev.teamhub.firebase
2+
3+
actual class FirebaseApp {
4+
actual val name: String
5+
get() = TODO("not implemented") //To change initializer of created properties use File | Settings | File Templates.
6+
actual val options: FirebaseOptions
7+
get() = TODO("not implemented") //To change initializer of created properties use File | Settings | File Templates.
8+
}
9+
10+
/** Returns the default firebase app instance. */
11+
actual val Firebase.app: FirebaseApp
12+
get() = kotlin.TODO("not implemented") //To change initializer of created properties use File | Settings | File Templates.
13+
14+
actual fun Firebase.app(name: String): FirebaseApp = kotlin.TODO("not implemented")
15+
16+
actual fun Firebase.apps(context: Any?): List<FirebaseApp> = kotlin.TODO("not implemented")
17+
18+
actual fun Firebase.initialize(context: Any?): FirebaseApp? = kotlin.TODO("not implemented")
19+
20+
/** Initializes and returns a FirebaseApp. */
21+
actual fun Firebase.initialize(context: Any?, options: FirebaseOptions): FirebaseApp = kotlin.TODO("not implemented")
22+
23+
/** Initializes and returns a FirebaseApp. */
24+
actual fun Firebase.initialize(context: Any?, options: FirebaseOptions, name: String): FirebaseApp = kotlin.TODO("not implemented")
25+
26+
actual open class FirebaseException : Exception()
27+
28+
actual class FirebaseNetworkException : FirebaseException()
29+
30+
actual open class FirebaseTooManyRequestsException : FirebaseException()
31+
32+
actual open class FirebaseApiNotAvailableException : FirebaseException()

firebase-auth/build.gradle.kts

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import org.apache.tools.ant.taskdefs.condition.Os
33
plugins {
44
id("com.android.library")
55
kotlin("multiplatform")
6+
kotlin("native.cocoapods")
67
`maven-publish`
78
}
89

@@ -32,6 +33,8 @@ kotlin {
3233
android {
3334
publishLibraryVariants("release", "debug")
3435
}
36+
val iosArm64 = iosArm64()
37+
val iosX64 = iosX64()
3538
jvm {
3639
val main by compilations.getting {
3740
kotlinOptions {
@@ -40,6 +43,14 @@ kotlin {
4043
}
4144
}
4245

46+
tasks.withType<org.jetbrains.kotlin.gradle.dsl.KotlinCompile<*>> {
47+
kotlinOptions.freeCompilerArgs += listOf(
48+
"-Xuse-experimental=kotlin.Experimental",
49+
"-Xuse-experimental=kotlinx.coroutines.ExperimentalCoroutinesApi",
50+
"-Xuse-experimental=kotlinx.serialization.ImplicitReflectionSerializer"
51+
)
52+
}
53+
4354
sourceSets {
4455
val commonMain by getting {
4556
dependencies {
@@ -52,9 +63,30 @@ kotlin {
5263
api("com.google.firebase:firebase-auth:19.1.0")
5364
}
5465
}
66+
val iosMain by creating {
67+
dependencies {
68+
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core-native:1.3.3")
69+
}
70+
}
5571
val jvmMain by getting {
5672
kotlin.srcDir("src/androidMain/kotlin")
5773
}
74+
75+
configure(listOf(iosArm64, iosX64)) {
76+
compilations.getByName("main") {
77+
source(sourceSets.get("iosMain"))
78+
val firebaseAuth by cinterops.creating {
79+
packageName("cocoapods.FirebaseAuth")
80+
defFile(file("$projectDir/src/iosMain/c_interop/FirebaseAuth.def"))
81+
compilerOpts("-F$projectDir/src/iosMain/c_interop/modules/FirebaseAuth-6.17.0")
82+
}
83+
}
84+
}
85+
86+
cocoapods {
87+
summary = ""
88+
homepage = ""
89+
}
5890
}
5991
}
6092

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
language = Objective-C
2+
modules = FirebaseAuth
3+
compilerOpts = -framework FirebaseAuth
4+
linkerOpts = -framework FirebaseAuth
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package dev.teamhub.firebase.auth
2+
3+
import dev.teamhub.firebase.Firebase
4+
import dev.teamhub.firebase.FirebaseApp
5+
import dev.teamhub.firebase.FirebaseException
6+
7+
actual val Firebase.auth: FirebaseAuth
8+
get() = kotlin.TODO("not implemented") //To change initializer of created properties use File | Settings | File Templates.
9+
10+
actual fun Firebase.auth(app: FirebaseApp): FirebaseAuth {
11+
kotlin.TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
12+
}
13+
14+
actual class FirebaseAuth {
15+
actual val currentUser: FirebaseUser?
16+
get() = TODO("not implemented") //To change initializer of created properties use File | Settings | File Templates.
17+
actual val authStateChanged: kotlinx.coroutines.flow.Flow<FirebaseUser?>
18+
get() = TODO("not implemented") //To change initializer of created properties use File | Settings | File Templates.
19+
20+
actual suspend fun signInWithCustomToken(token: String): AuthResult {
21+
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
22+
}
23+
24+
actual suspend fun signInAnonymously(): AuthResult {
25+
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
26+
}
27+
28+
actual suspend fun signOut() {
29+
}
30+
}
31+
32+
actual class AuthResult {
33+
actual val user: FirebaseUser?
34+
get() = TODO("not implemented") //To change initializer of created properties use File | Settings | File Templates.
35+
}
36+
37+
actual class FirebaseUser {
38+
actual val uid: String
39+
get() = TODO("not implemented") //To change initializer of created properties use File | Settings | File Templates.
40+
actual val isAnonymous: Boolean
41+
get() = TODO("not implemented") //To change initializer of created properties use File | Settings | File Templates.
42+
43+
actual suspend fun delete() {
44+
}
45+
46+
actual suspend fun reload() {
47+
}
48+
}
49+
50+
actual open class FirebaseAuthException : FirebaseException()
51+
actual class FirebaseAuthActionCodeException : FirebaseAuthException()
52+
actual class FirebaseAuthEmailException : FirebaseAuthException()
53+
actual class FirebaseAuthInvalidCredentialsException : FirebaseAuthException()
54+
actual class FirebaseAuthInvalidUserException : FirebaseAuthException()
55+
actual class FirebaseAuthRecentLoginRequiredException : FirebaseAuthException()
56+
actual class FirebaseAuthUserCollisionException : FirebaseAuthException()
57+
actual class FirebaseAuthWebException : FirebaseAuthException()

firebase-common/build.gradle.kts

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import org.apache.tools.ant.taskdefs.condition.Os
33
plugins {
44
id("com.android.library")
55
kotlin("multiplatform")
6+
kotlin("native.cocoapods")
67
kotlin("plugin.serialization") version "1.3.61"
78
`maven-publish`
89
}
@@ -36,6 +37,10 @@ kotlin {
3637
android {
3738
publishLibraryVariants("release", "debug")
3839
}
40+
41+
val iosArm64 = iosArm64()
42+
val iosX64 = iosX64()
43+
3944
jvm {
4045
val main by compilations.getting {
4146
kotlinOptions {
@@ -44,6 +49,14 @@ kotlin {
4449
}
4550
}
4651

52+
tasks.withType<org.jetbrains.kotlin.gradle.dsl.KotlinCompile<*>> {
53+
kotlinOptions.freeCompilerArgs += listOf(
54+
"-Xuse-experimental=kotlin.Experimental",
55+
"-Xuse-experimental=kotlinx.coroutines.ExperimentalCoroutinesApi",
56+
"-Xuse-experimental=kotlinx.serialization.ImplicitReflectionSerializer"
57+
)
58+
}
59+
4760
sourceSets {
4861
val commonMain by getting {
4962
dependencies {
@@ -74,6 +87,22 @@ kotlin {
7487
}
7588
kotlin.srcDir("src/androidTest/kotlin")
7689
}
90+
val iosMain by creating {
91+
dependencies {
92+
implementation("org.jetbrains.kotlinx:kotlinx-serialization-runtime-native:0.14.0")
93+
}
94+
}
95+
configure(listOf(iosArm64, iosX64)) {
96+
compilations.getByName("main") {
97+
source(sourceSets.get("iosMain"))
98+
}
99+
}
100+
101+
cocoapods {
102+
summary = "Firebase Core for iOS (plus community support for macOS and tvOS)"
103+
homepage = "https://github.com/TeamHubApp/firebase-kotlin-multiplatform-sdk"
104+
//pod("FirebaseCore", "~> 6.3.1")
105+
}
77106
}
78107
}
79108

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
language = Objective-C
2+
modules = FirebaseCore
3+
compilerOpts = -framework FirebaseCore
4+
linkerOpts = -framework FirebaseCore

0 commit comments

Comments
 (0)