Configuration service fetches default timers

This commit is contained in:
lbarraga 2023-04-16 23:21:53 +02:00
parent 0c183b9cc7
commit 2a546146a3
2 changed files with 42 additions and 1 deletions

View file

@ -1,4 +1,11 @@
package be.ugent.sel.studeez.domain package be.ugent.sel.studeez.domain
import be.ugent.sel.studeez.data.local.models.timer_info.TimerInfo
interface ConfigurationService { interface ConfigurationService {
suspend fun fetchConfiguration(): Boolean
fun getDefaultTimers(): List<TimerInfo>
} }

View file

@ -1,4 +1,38 @@
package be.ugent.sel.studeez.domain.implementation package be.ugent.sel.studeez.domain.implementation
class FirebaseConfigurationService { import be.ugent.sel.studeez.data.local.models.timer_info.*
import be.ugent.sel.studeez.domain.ConfigurationService
import com.google.firebase.ktx.Firebase
import com.google.firebase.remoteconfig.ktx.get
import com.google.firebase.remoteconfig.ktx.remoteConfig
import com.google.firebase.remoteconfig.ktx.remoteConfigSettings
import com.google.gson.Gson
import kotlinx.coroutines.tasks.await
import javax.inject.Inject
class FirebaseConfigurationService @Inject constructor() : ConfigurationService {
init {
// fetch configs elke keer als app wordt opgestart
val configSettings = remoteConfigSettings { minimumFetchIntervalInSeconds = 0 }
remoteConfig.setConfigSettingsAsync(configSettings)
}
private val remoteConfig
get() = Firebase.remoteConfig
override suspend fun fetchConfiguration(): Boolean {
return remoteConfig.fetchAndActivate().await()
}
override fun getDefaultTimers(): List<TimerInfo> {
val jsonString: String = remoteConfig[DEFAULT_TIMERS].asString()
// Json is een lijst van timers
val timerJsonList: List<TimerJson> = ToTimerConverter().jsonToTimerJsonList(jsonString)
return ToTimerConverter().convertToTimerInfoList(timerJsonList)
}
companion object {
private const val DEFAULT_TIMERS = "default_timers"
}
} }