Skip to content

Commit

Permalink
Merge pull request #1145 from DroidKaigi/takahirom/add-remoteconfig-r…
Browse files Browse the repository at this point in the history
…ealitime-update/2023-09-10

Use remote config realtime update
  • Loading branch information
takahirom authored Sep 10, 2023
2 parents 5835b6e + 26b7734 commit 7af6faf
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 12 deletions.
1 change: 1 addition & 0 deletions core/data/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ kotlin {
implementation(libs.okHttpLoggingInterceptor)
implementation(libs.okHttpLoggingInterceptor)
implementation(libs.firebaseRemoteConfig)
implementation(libs.androidxLifecycleProcess)
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package io.github.droidkaigi.confsched2023.data.di

import android.app.Application
import androidx.lifecycle.ProcessLifecycleOwner
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
Expand Down Expand Up @@ -133,7 +134,7 @@ class RemoteConfigModule {
@Provides
@Singleton
fun provideRemoteConfigApi(): RemoteConfigApi {
return DefaultRemoteConfigApi()
return DefaultRemoteConfigApi(ProcessLifecycleOwner.get().lifecycle)
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,24 +1,45 @@
package io.github.droidkaigi.confsched2023.data.remoteconfig

import androidx.lifecycle.DefaultLifecycleObserver
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleOwner
import co.touchlab.kermit.Logger
import com.google.firebase.remoteconfig.ConfigUpdate
import com.google.firebase.remoteconfig.ConfigUpdateListener
import com.google.firebase.remoteconfig.ConfigUpdateListenerRegistration
import com.google.firebase.remoteconfig.FirebaseRemoteConfigException
import dev.gitlive.firebase.Firebase
import dev.gitlive.firebase.remoteconfig.get
import dev.gitlive.firebase.remoteconfig.remoteConfig

class DefaultRemoteConfigApi : RemoteConfigApi {
class DefaultRemoteConfigApi(lifecycle: Lifecycle) : RemoteConfigApi {

private val firebaseRemoteConfig = Firebase.remoteConfig

/**
* If you want to change the interval time to fetch, please change it here
*/
// init {
// CoroutineScope(Dispatchers.IO).launch {
// firebaseRemoteConfig.settings {
// minimumFetchIntervalInSeconds = 1 * 60
// }
// }
// }
init {
lifecycle.addObserver(
object : DefaultLifecycleObserver {
var addOnConfigUpdateListener: ConfigUpdateListenerRegistration? = null
override fun onStart(owner: LifecycleOwner) {
addOnConfigUpdateListener =
firebaseRemoteConfig.android.addOnConfigUpdateListener(object :
ConfigUpdateListener {
override fun onUpdate(configUpdate: ConfigUpdate) {
// Do nothing
}

override fun onError(error: FirebaseRemoteConfigException) {
// Do nothing
}
})
}

override fun onStop(owner: LifecycleOwner) {
addOnConfigUpdateListener?.remove()
}
},
)
}

override suspend fun getBoolean(key: String): Boolean {
fetchConfig()
Expand Down
2 changes: 2 additions & 0 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ detekt = "1.23.1"
twitterComposeRule = "0.0.26"
lottie = "6.1.0"
kover = "0.7.3"
androidxLifecycleProcess = "2.6.2"

[libraries]
androidGradlePlugin = { group = "com.android.tools.build", name = "gradle", version.ref = "androidGradlePlugin" }
Expand All @@ -63,6 +64,7 @@ androidDesugarJdkLibs = { group = "com.android.tools", name = "desugar_jdk_libs"
daggerHiltAndroid = { module = "com.google.dagger:hilt-android", version.ref = "dagger" }
daggerHiltAndroidTesting = { module = "com.google.dagger:hilt-android-testing", version.ref = "dagger" }
daggerHiltAndroidCompiler = { module = "com.google.dagger:hilt-android-compiler", version.ref = "dagger" }
androidxLifecycleProcess = { group = "androidx.lifecycle", name = "lifecycle-process", version.ref = "androidxLifecycleProcess" }

# for iOS
koin = { module = "io.insert-koin:koin-core", version.ref = "koin" }
Expand Down

0 comments on commit 7af6faf

Please sign in to comment.