Updated on 2026-08-14
This commit is contained in:
commit
766730b1cd
5 changed files with 52 additions and 85 deletions
|
|
@ -1,14 +1,5 @@
|
|||
[
|
||||
{
|
||||
"name": "isWalletPayIdEnabled",
|
||||
"value": true
|
||||
},
|
||||
{
|
||||
"name": "isTopUpEnabled",
|
||||
"value": true
|
||||
},
|
||||
{
|
||||
"name": "isCreatingTwinCardsAllowed",
|
||||
"value": false
|
||||
}
|
||||
]
|
||||
{
|
||||
"isWalletPayIdEnabled": true,
|
||||
"isTopUpEnabled": true,
|
||||
"isCreatingTwinCardsAllowed": false
|
||||
}
|
||||
|
|
@ -1,14 +1,5 @@
|
|||
[
|
||||
{
|
||||
"name": "isWalletPayIdEnabled",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "isTopUpEnabled",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "isCreatingTwinCardsAllowed",
|
||||
"value": true
|
||||
}
|
||||
]
|
||||
{
|
||||
"isWalletPayIdEnabled": false,
|
||||
"isTopUpEnabled": false,
|
||||
"isCreatingTwinCardsAllowed": true
|
||||
}
|
||||
|
|
@ -6,7 +6,6 @@ import com.google.firebase.ktx.Firebase
|
|||
import com.google.firebase.remoteconfig.ktx.remoteConfig
|
||||
import com.squareup.moshi.JsonAdapter
|
||||
import com.squareup.moshi.Moshi
|
||||
import com.squareup.moshi.Types
|
||||
import com.tangem.wallet.BuildConfig
|
||||
import timber.log.Timber
|
||||
|
||||
|
|
@ -30,16 +29,13 @@ class LocalLoader(
|
|||
|
||||
override fun loadConfig(onComplete: (ConfigModel) -> Unit) {
|
||||
val config = try {
|
||||
val featureType = Types.newParameterizedType(List::class.java, FeatureModel::class.java)
|
||||
val featureAdapter: JsonAdapter<List<FeatureModel>> = moshi.adapter(featureType)
|
||||
val valuesType = Types.newParameterizedType(List::class.java, ConfigValueModel::class.java)
|
||||
val valuesAdapter: JsonAdapter<List<ConfigValueModel>> = moshi.adapter(valuesType)
|
||||
val featureAdapter: JsonAdapter<FeatureModel> = moshi.adapter(FeatureModel::class.java)
|
||||
val valuesAdapter: JsonAdapter<ConfigValueModel> = moshi.adapter(ConfigValueModel::class.java)
|
||||
|
||||
val jsonFeatures = readAssetAsString(ConfigLoader.featuresName)
|
||||
val jsonConfigValues = readAssetAsString(ConfigLoader.configValuesName)
|
||||
|
||||
ConfigModel(featureAdapter.fromJson(jsonFeatures) ?: listOf(),
|
||||
valuesAdapter.fromJson(jsonConfigValues) ?: listOf())
|
||||
ConfigModel(featureAdapter.fromJson(jsonFeatures), valuesAdapter.fromJson(jsonConfigValues))
|
||||
} catch (ex: Exception) {
|
||||
Timber.e(ex)
|
||||
ConfigModel.empty()
|
||||
|
|
@ -67,9 +63,8 @@ class RemoteLoader(
|
|||
onComplete(emptyConfig)
|
||||
return@addOnCompleteListener
|
||||
}
|
||||
val featureType = Types.newParameterizedType(List::class.java, FeatureModel::class.java)
|
||||
val featureAdapter: JsonAdapter<List<FeatureModel>> = moshi.adapter(featureType)
|
||||
onComplete(ConfigModel(featureAdapter.fromJson(jsonConfig) ?: listOf(), listOf()))
|
||||
val featureAdapter: JsonAdapter<FeatureModel> = moshi.adapter(FeatureModel::class.java)
|
||||
onComplete(ConfigModel(featureAdapter.fromJson(jsonConfig), null))
|
||||
} else {
|
||||
onComplete(emptyConfig)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,11 +26,11 @@ class ConfigManager(
|
|||
|
||||
fun load(onComplete: VoidCallback? = null) {
|
||||
localLoader.loadConfig { config ->
|
||||
config.features?.forEach { setupFeature(it.name, it.value) }
|
||||
config.configValues?.forEach { setupKey(it.name, it.value) }
|
||||
setupFeature(config.features)
|
||||
setupKey(config.configValues)
|
||||
}
|
||||
remoteLoader.loadConfig { config ->
|
||||
config.features?.forEach { setupFeature(it.name, it.value) }
|
||||
setupFeature(config.features)
|
||||
onComplete?.invoke()
|
||||
}
|
||||
}
|
||||
|
|
@ -52,40 +52,33 @@ class ConfigManager(
|
|||
}
|
||||
}
|
||||
|
||||
private fun setupFeature(name: String, value: Boolean) {
|
||||
val newValue = value ?: return
|
||||
private fun setupFeature(featureModel: FeatureModel?) {
|
||||
val model = featureModel ?: return
|
||||
|
||||
when (name) {
|
||||
isWalletPayIdEnabled -> {
|
||||
config = config.copy(isWalletPayIdEnabled = newValue)
|
||||
defaultConfig = defaultConfig.copy(isWalletPayIdEnabled = newValue)
|
||||
}
|
||||
isTopUpEnabled -> {
|
||||
config = config.copy(isTopUpEnabled = newValue)
|
||||
defaultConfig = defaultConfig.copy(isTopUpEnabled = newValue)
|
||||
}
|
||||
isCreatingTwinCardsAllowed -> {
|
||||
config = config.copy(isCreatingTwinCardsAllowed = newValue)
|
||||
defaultConfig = defaultConfig.copy(isCreatingTwinCardsAllowed = newValue)
|
||||
}
|
||||
}
|
||||
config = config.copy(
|
||||
isWalletPayIdEnabled = model.isWalletPayIdEnabled,
|
||||
isTopUpEnabled = model.isTopUpEnabled,
|
||||
isCreatingTwinCardsAllowed = model.isCreatingTwinCardsAllowed
|
||||
)
|
||||
defaultConfig = defaultConfig.copy(
|
||||
isWalletPayIdEnabled = model.isWalletPayIdEnabled,
|
||||
isTopUpEnabled = model.isTopUpEnabled,
|
||||
isCreatingTwinCardsAllowed = model.isCreatingTwinCardsAllowed
|
||||
)
|
||||
}
|
||||
|
||||
private fun setupKey(name: String, value: String) {
|
||||
when (name) {
|
||||
coinMarketCapKey -> {
|
||||
config = config.copy(coinMarketCapKey = value)
|
||||
defaultConfig = defaultConfig.copy(coinMarketCapKey = value)
|
||||
}
|
||||
moonPayApiKey -> {
|
||||
config = config.copy(moonPayApiKey = value)
|
||||
defaultConfig = defaultConfig.copy(moonPayApiKey = value)
|
||||
}
|
||||
moonPayApiSecretKey -> {
|
||||
config = config.copy(moonPayApiSecretKey = value)
|
||||
defaultConfig = defaultConfig.copy(moonPayApiSecretKey = value)
|
||||
}
|
||||
}
|
||||
private fun setupKey(configValues: ConfigValueModel?) {
|
||||
val values = configValues ?: return
|
||||
config = config.copy(
|
||||
coinMarketCapKey = values.coinMarketCapKey,
|
||||
moonPayApiKey = values.moonPayApiKey,
|
||||
moonPayApiSecretKey = values.moonPayApiSecretKey
|
||||
)
|
||||
defaultConfig = defaultConfig.copy(
|
||||
coinMarketCapKey = values.coinMarketCapKey,
|
||||
moonPayApiKey = values.moonPayApiKey,
|
||||
moonPayApiSecretKey = values.moonPayApiSecretKey
|
||||
)
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
|
|
|||
|
|
@ -4,23 +4,20 @@ package com.tangem.tap.domain.config
|
|||
[REDACTED_AUTHOR]
|
||||
*/
|
||||
|
||||
interface BaseConfigModel<V> {
|
||||
val name: String
|
||||
val value: V?
|
||||
}
|
||||
|
||||
class FeatureModel(
|
||||
override val name: String,
|
||||
override val value: Boolean
|
||||
) : BaseConfigModel<Boolean>
|
||||
val isWalletPayIdEnabled: Boolean,
|
||||
val isTopUpEnabled: Boolean,
|
||||
val isCreatingTwinCardsAllowed: Boolean,
|
||||
)
|
||||
|
||||
class ConfigValueModel(
|
||||
override val name: String,
|
||||
override val value: String
|
||||
) : BaseConfigModel<String>
|
||||
val coinMarketCapKey: String,
|
||||
val moonPayApiKey: String,
|
||||
val moonPayApiSecretKey: String,
|
||||
)
|
||||
|
||||
class ConfigModel(val features: List<FeatureModel>?, val configValues: List<ConfigValueModel>?) {
|
||||
class ConfigModel(val features: FeatureModel?, val configValues: ConfigValueModel?) {
|
||||
companion object {
|
||||
fun empty(): ConfigModel = ConfigModel(listOf(), listOf())
|
||||
fun empty(): ConfigModel = ConfigModel(null, null)
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue