From 5968cf338f0d3dde02a33d78ab647b388125d768 Mon Sep 17 00:00:00 2001 From: Tangem Date: Fri, 13 Nov 2020 21:38:54 +0300 Subject: [PATCH] Updated on 2026-08-14 --- app/build.gradle | 1 + .../tangem/tap/domain/config/ConfigLoader.kt | 32 +++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/app/build.gradle b/app/build.gradle index ae51a02977..bd0585009b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -98,6 +98,7 @@ dependencies { // Firebase implementation platform('com.google.firebase:firebase-bom:26.0.0') implementation 'com.google.firebase:firebase-crashlytics' + implementation 'com.google.firebase:firebase-config-ktx' implementation 'com.google.firebase:firebase-analytics-ktx' testImplementation 'junit:junit:4.13' diff --git a/app/src/main/java/com/tangem/tap/domain/config/ConfigLoader.kt b/app/src/main/java/com/tangem/tap/domain/config/ConfigLoader.kt index 372bf5e807..a9d07377cd 100644 --- a/app/src/main/java/com/tangem/tap/domain/config/ConfigLoader.kt +++ b/app/src/main/java/com/tangem/tap/domain/config/ConfigLoader.kt @@ -1,6 +1,8 @@ package com.tangem.tap.domain.config import android.content.Context +import com.google.firebase.ktx.Firebase +import com.google.firebase.remoteconfig.ktx.remoteConfig import com.squareup.moshi.JsonAdapter import com.tangem.wallet.BuildConfig import timber.log.Timber @@ -65,4 +67,34 @@ class LocalLoader( private fun readAssetAsString(fileName: String): String { return context.assets.open("$fileName.json").bufferedReader().readText() } +} + +class RemoteLoader( + private val nameResolver: NameResolver, + private val adapter: JsonAdapter +) : ConfigLoader { + + override suspend fun loadConfig(onComplete: (Config) -> Unit) { + val emptyConfig = Config.empty() + val remoteConfig = Firebase.remoteConfig + remoteConfig.fetchAndActivate().addOnCompleteListener { + if (it.isSuccessful) { + val config = remoteConfig.getValue(nameResolver.getFeaturesName()) + val jsonConfig = config.asString() + if (jsonConfig.isEmpty()) { + onComplete(emptyConfig) + return@addOnCompleteListener + } + val configModel = adapter.fromJson(jsonConfig) + val features = configModel?.toFeatures(ConfigType.Remote) ?: mutableMapOf() + val configValues = configModel?.toConfigValues() ?: mutableMapOf() + onComplete(Config(features, configValues)) + } else { + onComplete(emptyConfig) + } + }.addOnFailureListener { + Timber.e(it) + onComplete(emptyConfig) + } + } } \ No newline at end of file