Skip to content

Commit 4839352

Browse files
committed
ComposeApp: Add Firebase to Android & Desktop
1 parent 451d935 commit 4839352

File tree

15 files changed

+117
-4
lines changed

15 files changed

+117
-4
lines changed

.idea/misc.xml

Lines changed: 0 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ dependencies {
3737
implementation(libs.androidx.activity.compose)
3838
implementation(libs.androidx.compose.ui)
3939
implementation(libs.androidx.compose.material3)
40+
implementation(libs.gitlive.firebase.firestore)
4041
implementation(libs.koin.android)
4142
testImplementation(libs.junit)
4243
androidTestImplementation(libs.junit)

app/src/main/java/com/jarroyo/composeapp/ComposeApp.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,17 @@ package com.jarroyo.composeapp
22

33
import android.app.Application
44
import android.content.Context
5+
import com.google.firebase.FirebaseApp
56
import com.jarroyo.feature.home.shared.di.initKoin
67
import dagger.hilt.android.HiltAndroidApp
78
import org.koin.dsl.module
89

10+
911
@HiltAndroidApp
1012
class ComposeApp : Application() {
1113
override fun onCreate() {
1214
super.onCreate()
15+
FirebaseApp.initializeApp(this)
1316
initKoin(
1417
listOf(
1518
module {

build-conventions/src/main/kotlin/composeapp.android-app-conventions.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ plugins {
1717
id("composeapp.dependencies-conventions")
1818
id("com.starter.easylauncher")
1919
id("composeapp.ruler-conventions")
20+
id("com.google.gms.google-services")
2021
}
2122

2223
val libs = the<LibrariesForLibs>()

build-conventions/src/main/kotlin/composeapp.multiplatform-library-conventions.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ kotlin {
6363
implementation(libs.calendar)
6464
implementation(libs.coil.compose)
6565
implementation(libs.coroutines.core)
66+
implementation(libs.gitlive.firebase.firestore)
6667
implementation(libs.koin.annotations)
6768
implementation(libs.koin.compose)
6869
implementation(libs.koin.compose.viewmodel)

desktop/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ kotlin {
1616
jvmMain.dependencies {
1717
implementation(projects.modules.featureHomeShared)
1818
implementation(compose.desktop.currentOs)
19+
implementation(libs.gitlive.firebase.java)
1920
implementation(libs.koin.core)
2021
}
2122
}
Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,49 @@
11
package com.jarroyo.composeapp
22

3+
import android.app.Application
34
import androidx.compose.ui.window.Window
45
import androidx.compose.ui.window.application
56
import com.jarroyo.feature.home.shared.ui.RootView
67
import com.jarroyo.feature.home.shared.di.initKoin
8+
import com.google.firebase.Firebase
9+
import com.google.firebase.FirebaseOptions
10+
import com.google.firebase.FirebasePlatform
11+
import com.google.firebase.initialize
712

813
// Migration to PreCompose 1.6.2 import moe.tlaster.precompose.ProvidePreComposeLocals
914

1015
fun main() {
16+
initializeFirebase()
1117
initKoin()
1218
application {
1319
Window(
1420
title = "Compose APP",
1521
onCloseRequest = ::exitApplication,
1622
) {
17-
// Migration to PreCompose 1.6.2 ProvidePreComposeLocals {
18-
RootView()
19-
// Migration to PreCompose 1.6.2 }
23+
RootView()
2024
}
2125
}
2226
}
27+
28+
fun initializeFirebase() {
29+
FirebasePlatform.initializeFirebasePlatform(
30+
object : FirebasePlatform() {
31+
override fun store(key: String, value: String) {
32+
// TODO
33+
}
34+
override fun retrieve(key: String) = ""
35+
// TODO
36+
override fun clear(key: String) {
37+
// TODO
38+
}
39+
override fun log(msg: String) = println(msg)
40+
}
41+
)
42+
43+
val options: FirebaseOptions = FirebaseOptions.Builder()
44+
.setProjectId("virtualgym-684f7")
45+
.setApplicationId("1:129903346150:android:bf4d3697156f8e7009d627")
46+
.build()
47+
48+
Firebase.initialize(Application(), options)
49+
}

gradle/libs.versions.toml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ coil3 = "3.0.4"
1616
coroutines = "1.10.1"
1717
detekt = "1.23.7"
1818
diktat = "1.2.5"
19+
gitlive = "2.1.0"
1920
gradle = "8.1.1"
2021
greclipse = "4.19.0"
2122
hilt = "2.55"
@@ -107,6 +108,10 @@ desugar = { module = "com.android.tools:desugar_jdk_libs", version = "2.1.5" }
107108
detekt = { module = "io.gitlab.arturbosch.detekt:detekt-formatting", version.ref = "detekt" }
108109
detekt-rules-compose = { module = "ru.kode:detekt-rules-compose", version = "1.4.0" }
109110
detekt-twitter-compose-rules = { module = "com.twitter.compose.rules:detekt", version = "0.0.26" }
111+
firebase-bom = { module = "com.google.firebase:firebase-bom", version = "33.10.0" }
112+
gitlive-firebase-firestore = { module = "dev.gitlive:firebase-firestore", version.ref = "gitlive" }
113+
gitlive-firebase-common = { module = "dev.gitlive:firebase-common", version.ref = "gitlive" }
114+
gitlive-firebase-java = { module = "dev.gitlive:firebase-java-sdk", version = "0.4.6" }
110115
hilt-android = { module = "com.google.dagger:hilt-android", version.ref = "hilt" }
111116
hilt-android-compiler = { module = "com.google.dagger:hilt-android-compiler", version.ref = "hilt" }
112117
hilt-android-testing = { module = "com.google.dagger:hilt-android-testing", version.ref = "hilt" }
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.jarroyo.feature.home.api.interactor
2+
3+
import com.apollographql.apollo.cache.normalized.FetchPolicy
4+
import com.github.michaelbull.result.Result
5+
import com.jarroyo.composeapp.library.network.api.graphql.fragment.LaunchFragment
6+
import kotlinx.serialization.Serializable
7+
8+
interface GetSchedulesInteractor {
9+
suspend operator fun invoke(
10+
): Result<List<String>?, Exception>
11+
}
12+
13+
@Serializable
14+
class Schedule(
15+
id: String,
16+
name: String,
17+
)

modules/feature-home-shared/src/commonMain/kotlin/com/jarroyo/feature/home/shared/di/FeatureHomeModule.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,14 @@ import com.jarroyo.feature.home.api.interactor.AddFavoriteInteractor
44
import com.jarroyo.feature.home.api.interactor.GetFavoritesInteractor
55
import com.jarroyo.feature.home.api.interactor.GetLaunchDetailInteractor
66
import com.jarroyo.feature.home.api.interactor.GetLaunchesInteractor
7+
import com.jarroyo.feature.home.api.interactor.GetSchedulesInteractor
78
import com.jarroyo.feature.home.api.interactor.OpenUrlInBrowserInteractor
89
import com.jarroyo.feature.home.api.interactor.RemoveFavoriteInteractor
910
import com.jarroyo.feature.home.shared.interactor.AddFavoriteInteractorImpl
1011
import com.jarroyo.feature.home.shared.interactor.GetFavoritesInteractorImpl
1112
import com.jarroyo.feature.home.shared.interactor.GetLaunchDetailInteractorImpl
1213
import com.jarroyo.feature.home.shared.interactor.GetLaunchesInteractorImpl
14+
import com.jarroyo.feature.home.shared.interactor.GetSchedulesInteractorImpl
1315
import com.jarroyo.feature.home.shared.interactor.OpenUrlInBrowserInteractorImpl
1416
import com.jarroyo.feature.home.shared.interactor.RemoveFavoriteInteractorImpl
1517
import com.jarroyo.feature.home.shared.ui.HomeViewModel
@@ -22,6 +24,7 @@ val featureHomeModule = module {
2224
factory<GetFavoritesInteractor> { GetFavoritesInteractorImpl(get()) }
2325
factory<GetLaunchesInteractor> { GetLaunchesInteractorImpl(get()) }
2426
factory<GetLaunchDetailInteractor> { GetLaunchDetailInteractorImpl(get()) }
27+
factory<GetSchedulesInteractor> { GetSchedulesInteractorImpl() }
2528
factory<OpenUrlInBrowserInteractor> { OpenUrlInBrowserInteractorImpl() }
2629
factory<RemoveFavoriteInteractor> { RemoveFavoriteInteractorImpl(get()) }
2730

0 commit comments

Comments
 (0)