diff --git a/app/src/main/assets/features_dev.json b/app/src/main/assets/features_dev.json index 236d0285bd..fd84b700a9 100644 --- a/app/src/main/assets/features_dev.json +++ b/app/src/main/assets/features_dev.json @@ -1,14 +1,5 @@ -[ - { - "name": "isWalletPayIdEnabled", - "value": true - }, - { - "name": "isTopUpEnabled", - "value": true - }, - { - "name": "isCreatingTwinCardsAllowed", - "value": false - } -] \ No newline at end of file +{ + "isWalletPayIdEnabled": true, + "isTopUpEnabled": true, + "isCreatingTwinCardsAllowed": false +} \ No newline at end of file diff --git a/app/src/main/assets/features_prod.json b/app/src/main/assets/features_prod.json index 39b226d053..9e06a389d0 100644 --- a/app/src/main/assets/features_prod.json +++ b/app/src/main/assets/features_prod.json @@ -1,14 +1,5 @@ -[ - { - "name": "isWalletPayIdEnabled", - "value": false - }, - { - "name": "isTopUpEnabled", - "value": false - }, - { - "name": "isCreatingTwinCardsAllowed", - "value": true - } -] \ No newline at end of file +{ + "isWalletPayIdEnabled": false, + "isTopUpEnabled": false, + "isCreatingTwinCardsAllowed": true +} \ No newline at end of file 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 60bb343e02..725208082f 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 @@ -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> = moshi.adapter(featureType) - val valuesType = Types.newParameterizedType(List::class.java, ConfigValueModel::class.java) - val valuesAdapter: JsonAdapter> = moshi.adapter(valuesType) + val featureAdapter: JsonAdapter = moshi.adapter(FeatureModel::class.java) + val valuesAdapter: JsonAdapter = 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> = moshi.adapter(featureType) - onComplete(ConfigModel(featureAdapter.fromJson(jsonConfig) ?: listOf(), listOf())) + val featureAdapter: JsonAdapter = moshi.adapter(FeatureModel::class.java) + onComplete(ConfigModel(featureAdapter.fromJson(jsonConfig), null)) } else { onComplete(emptyConfig) } diff --git a/app/src/main/java/com/tangem/tap/domain/config/ConfigManager.kt b/app/src/main/java/com/tangem/tap/domain/config/ConfigManager.kt index 49a2af61f1..75d02fd80b 100644 --- a/app/src/main/java/com/tangem/tap/domain/config/ConfigManager.kt +++ b/app/src/main/java/com/tangem/tap/domain/config/ConfigManager.kt @@ -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 { diff --git a/app/src/main/java/com/tangem/tap/domain/config/JsonModels.kt b/app/src/main/java/com/tangem/tap/domain/config/JsonModels.kt index 1b7272765b..e5c5bc44fb 100644 --- a/app/src/main/java/com/tangem/tap/domain/config/JsonModels.kt +++ b/app/src/main/java/com/tangem/tap/domain/config/JsonModels.kt @@ -4,23 +4,20 @@ package com.tangem.tap.domain.config [REDACTED_AUTHOR] */ -interface BaseConfigModel { - val name: String - val value: V? -} - class FeatureModel( - override val name: String, - override val value: Boolean -) : BaseConfigModel + val isWalletPayIdEnabled: Boolean, + val isTopUpEnabled: Boolean, + val isCreatingTwinCardsAllowed: Boolean, +) class ConfigValueModel( - override val name: String, - override val value: String -) : BaseConfigModel + val coinMarketCapKey: String, + val moonPayApiKey: String, + val moonPayApiSecretKey: String, +) -class ConfigModel(val features: List?, val configValues: List?) { +class ConfigModel(val features: FeatureModel?, val configValues: ConfigValueModel?) { companion object { - fun empty(): ConfigModel = ConfigModel(listOf(), listOf()) + fun empty(): ConfigModel = ConfigModel(null, null) } } \ No newline at end of file