Skip to content

Commit 6d807fc

Browse files
authored
[MERGE] #363 -> develop
[ADD/#363] Firebase ๋ชจ๋“ˆ ์ถ”๊ฐ€
2 parents 62cf18d + 37336c2 commit 6d807fc

8 files changed

Lines changed: 93 additions & 4 deletions

File tree

โ€Žcore/firebase/.gitignoreโ€Ž

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/build
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import com.terning.build_logic.extension.setNamespace
2+
3+
4+
plugins {
5+
alias(libs.plugins.terning.library)
6+
}
7+
8+
android {
9+
setNamespace("core.firebase")
10+
}
11+
12+
dependencies {
13+
implementation(libs.timber)
14+
15+
implementation(platform(libs.firebase.bom))
16+
implementation(libs.firebase.analytics)
17+
implementation(libs.firebase.messaging)
18+
implementation(libs.firebase.config)
19+
}

โ€Žcore/firebase/consumer-rules.proโ€Ž

Whitespace-only changes.
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
3+
4+
</manifest>
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package com.terning.core.firebase.remoteconfig
2+
3+
enum class RemoteConfigKey(
4+
val key: String
5+
) {
6+
LATEST_APP_VERSION(key = "android_app_version"),
7+
MAJOR_UPDATE_TITLE(key = "android_update_title"),
8+
MAJOR_UPDATE_BODY(key = "android_update_body");
9+
}
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package com.terning.core.firebase.remoteconfig
2+
3+
import com.google.firebase.Firebase
4+
import com.google.firebase.remoteconfig.FirebaseRemoteConfig
5+
import com.google.firebase.remoteconfig.remoteConfig
6+
import com.google.firebase.remoteconfig.remoteConfigSettings
7+
import com.terning.core.firebase.remoteconfig.RemoteConfigKey.LATEST_APP_VERSION
8+
import com.terning.core.firebase.remoteconfig.RemoteConfigKey.MAJOR_UPDATE_BODY
9+
import com.terning.core.firebase.remoteconfig.RemoteConfigKey.MAJOR_UPDATE_TITLE
10+
import timber.log.Timber
11+
12+
object RemoteConfigUtil {
13+
private const val TAG = "FirebaseRemoteConfig"
14+
15+
private val remoteConfig: FirebaseRemoteConfig by lazy {
16+
val configSettings = remoteConfigSettings {
17+
minimumFetchIntervalInSeconds = 3600
18+
}
19+
Firebase.remoteConfig.apply {
20+
setConfigSettingsAsync(configSettings)
21+
setDefaultsAsync(
22+
mapOf(
23+
LATEST_APP_VERSION.key to "",
24+
MAJOR_UPDATE_BODY.key to "",
25+
MAJOR_UPDATE_TITLE.key to "",
26+
)
27+
)
28+
}
29+
}
30+
31+
fun onVersionFetchCompleteListener(callback: (Map<RemoteConfigKey, String>) -> Unit) {
32+
try {
33+
val fetchTask = remoteConfig.fetchAndActivate()
34+
fetchTask.addOnCompleteListener { task ->
35+
if (task.isSuccessful) {
36+
val map = mutableMapOf(
37+
getConfigKeyToStringPair(LATEST_APP_VERSION),
38+
getConfigKeyToStringPair(MAJOR_UPDATE_TITLE),
39+
getConfigKeyToStringPair(MAJOR_UPDATE_BODY),
40+
)
41+
callback(map)
42+
}
43+
}
44+
} catch (e: Exception) {
45+
Timber.tag(TAG).e(e.printStackTrace().toString())
46+
}
47+
}
48+
49+
50+
private fun getConfigKeyToStringPair(configKey: RemoteConfigKey): Pair<RemoteConfigKey, String> =
51+
configKey to remoteConfig.getString(configKey.key)
52+
}
53+
54+

โ€Žgradle/libs.versions.tomlโ€Ž

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -209,8 +209,9 @@ paging-common = { group = "androidx.paging", name = "paging-common", version.ref
209209
paging-compose = { group = "androidx.paging", name = "paging-compose", version.ref = "paging" }
210210
androidx-paging-common-android = { group = "androidx.paging", name = "paging-common-android", version.ref = "pagingCommonAndroid" }
211211

212-
firebase-analytics = { module = "com.google.firebase:firebase-analytics" }
213-
firebase-bom = { module = "com.google.firebase:firebase-bom", version.ref = "firebaseBom" }
212+
firebase-analytics = { group = "com.google.firebase", name = "firebase-analytics" }
213+
firebase-config = { group = "com.google.firebase", name = "firebase-config" }
214+
firebase-bom = { group = "com.google.firebase", name = "firebase-bom", version.ref = "firebaseBom" }
214215
firebase-messaging = { group = "com.google.firebase", name = "firebase-messaging-ktx", version.ref = "firebaseMessaging" }
215216

216217
[bundles]
@@ -241,7 +242,7 @@ kotlin-parcelize = { id = "org.jetbrains.kotlin.plugin.parcelize", version.ref =
241242
dokka = { id = "org.jetbrains.dokka", version.ref = "dokka" }
242243
baselineprofile = { id = "androidx.baselineprofile", version.ref = "baselineprofile" }
243244
compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" }
244-
google-service = {id = "com.google.gms.google-services", version.ref = "google-services"}
245+
google-service = { id = "com.google.gms.google-services", version.ref = "google-services" }
245246

246247
terning-application = { id = "terning.android.application", version = "unspecified" }
247248
terning-compose = { id = "terning.android.compose", version = "unspecified" }

โ€Žsettings.gradle.ktsโ€Ž

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@ include(
3838
":core:designsystem",
3939
":core:navigation",
4040
":core:network",
41-
":core:local"
41+
":core:local",
42+
":core:firebase"
4243
)
4344

4445
// data

0 commit comments

Comments
ย (0)