diff --git a/app/src/main/assets/features_dev.json b/app/src/main/assets/features_dev.json deleted file mode 100644 index b24d083053..0000000000 --- a/app/src/main/assets/features_dev.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "isTopUpEnabled": true, - "isCreatingTwinCardsAllowed": true -} \ No newline at end of file diff --git a/app/src/main/assets/features_prod.json b/app/src/main/assets/features_prod.json deleted file mode 100644 index b24d083053..0000000000 --- a/app/src/main/assets/features_prod.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "isTopUpEnabled": true, - "isCreatingTwinCardsAllowed": true -} \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/domain/TapWalletManager.kt b/app/src/main/java/com/tangem/tap/domain/TapWalletManager.kt index cadd80d571..faaa017b70 100644 --- a/app/src/main/java/com/tangem/tap/domain/TapWalletManager.kt +++ b/app/src/main/java/com/tangem/tap/domain/TapWalletManager.kt @@ -4,10 +4,7 @@ import com.tangem.blockchain.common.Token import com.tangem.blockchain.common.Wallet import com.tangem.core.analytics.Analytics import com.tangem.core.analytics.models.Basic -import com.tangem.datasource.config.ConfigManager import com.tangem.domain.common.extensions.withMainContext -import com.tangem.domain.common.util.cardTypesResolver -import com.tangem.domain.models.scan.ScanResponse import com.tangem.domain.wallets.models.UserWallet import com.tangem.operations.attestation.Attestation import com.tangem.tap.common.extensions.setContext @@ -50,7 +47,6 @@ class TapWalletManager( tangemSdkManager.changeDisplayedCardIdNumbersCount(scanResponse) - updateConfigManager(scanResponse) withMainContext { // Order is important store.dispatch(TwinCardsAction.IfTwinsPrepareState(scanResponse)) @@ -58,16 +54,6 @@ class TapWalletManager( store.dispatch(GlobalAction.SetIfCardVerifiedOnline(!attestationFailed)) } } - - fun updateConfigManager(data: ScanResponse) { - val configManager = store.state.globalState.configManager - - if (data.cardTypesResolver.isStart2Coin()) { - configManager?.turnOff(ConfigManager.IS_TOP_UP_ENABLED) - } else { - configManager?.resetToDefault(ConfigManager.IS_TOP_UP_ENABLED) - } - } } fun Wallet.getFirstToken(): Token? = getTokens().toList().getOrNull(index = 0) \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/domain/scanCard/LegacyScanProcessor.kt b/app/src/main/java/com/tangem/tap/domain/scanCard/LegacyScanProcessor.kt index f851113e17..3475f1559f 100644 --- a/app/src/main/java/com/tangem/tap/domain/scanCard/LegacyScanProcessor.kt +++ b/app/src/main/java/com/tangem/tap/domain/scanCard/LegacyScanProcessor.kt @@ -132,10 +132,6 @@ internal object LegacyScanProcessor { crossinline onWalletNotCreated: suspend () -> Unit, crossinline onSuccess: suspend (ScanResponse) -> Unit, ) { - val globalState = store.state.globalState - val tapWalletManager = globalState.tapWalletManager - tapWalletManager.updateConfigManager(scanResponse) - store.dispatchOnMain(TwinCardsAction.IfTwinsPrepareState(scanResponse)) if (OnboardingHelper.isOnboardingCase(scanResponse)) { diff --git a/app/src/main/java/com/tangem/tap/domain/scanCard/UseCaseScanProcessor.kt b/app/src/main/java/com/tangem/tap/domain/scanCard/UseCaseScanProcessor.kt index 10646e2bfa..09fe732b6d 100644 --- a/app/src/main/java/com/tangem/tap/domain/scanCard/UseCaseScanProcessor.kt +++ b/app/src/main/java/com/tangem/tap/domain/scanCard/UseCaseScanProcessor.kt @@ -60,7 +60,7 @@ internal object UseCaseScanProcessor { ) add(AnalyticsChain(Basic.CardWasScanned(analyticsSource))) add(DisclaimerChain(store, disclaimerWillShow)) - add(CheckForOnboardingChain(store, store.state.globalState.tapWalletManager)) + add(CheckForOnboardingChain(store)) } scanCardUseCase(cardId, afterScanChains = chains).fold( diff --git a/app/src/main/java/com/tangem/tap/domain/scanCard/chains/CheckForOnboardingChain.kt b/app/src/main/java/com/tangem/tap/domain/scanCard/chains/CheckForOnboardingChain.kt index 72d0b6ee59..f5606560c0 100644 --- a/app/src/main/java/com/tangem/tap/domain/scanCard/chains/CheckForOnboardingChain.kt +++ b/app/src/main/java/com/tangem/tap/domain/scanCard/chains/CheckForOnboardingChain.kt @@ -16,7 +16,6 @@ import com.tangem.tap.common.extensions.inject import com.tangem.tap.common.extensions.setContext import com.tangem.tap.common.redux.AppState import com.tangem.tap.common.redux.global.GlobalAction -import com.tangem.tap.domain.TapWalletManager import com.tangem.tap.features.onboarding.OnboardingHelper import com.tangem.tap.features.onboarding.products.twins.redux.TwinCardsAction import com.tangem.tap.features.onboarding.products.twins.redux.TwinCardsStep @@ -32,17 +31,14 @@ import org.rekotlin.Store * - [ScanChainException.OnboardingNeeded] if onboarding required. * * @param store the [Store] that holds the state of the app. - * @param tapWalletManager manager responsible for handling operations related to the Wallet. * * @see Chain for more information about the Chain interface. */ class CheckForOnboardingChain( private val store: Store, - private val tapWalletManager: TapWalletManager, ) : ResultChain() { override suspend fun launch(previousChainResult: ScanResponse): ScanChainResult { - tapWalletManager.updateConfigManager(previousChainResult) store.dispatchOnMain(TwinCardsAction.IfTwinsPrepareState(previousChainResult)) return when { diff --git a/core/datasource/src/main/java/com/tangem/datasource/config/ConfigManager.kt b/core/datasource/src/main/java/com/tangem/datasource/config/ConfigManager.kt index 9c8a0d8127..ac8c927826 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/config/ConfigManager.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/config/ConfigManager.kt @@ -11,13 +11,4 @@ interface ConfigManager { val config: Config suspend fun load(configLoader: Loader, onComplete: ((config: Config) -> Unit)? = null) - - fun turnOff(name: String) - - fun resetToDefault(name: String) - - companion object { - const val IS_CREATING_TWIN_CARDS_ALLOWED = "isCreatingTwinCardsAllowed" - const val IS_TOP_UP_ENABLED = "isTopUpEnabled" - } } \ No newline at end of file diff --git a/core/datasource/src/main/java/com/tangem/datasource/config/ConfigManagerImpl.kt b/core/datasource/src/main/java/com/tangem/datasource/config/ConfigManagerImpl.kt index af8b2a28c7..62b5065feb 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/config/ConfigManagerImpl.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/config/ConfigManagerImpl.kt @@ -1,12 +1,9 @@ package com.tangem.datasource.config import com.tangem.blockchain.common.* -import com.tangem.datasource.config.ConfigManager.Companion.IS_CREATING_TWIN_CARDS_ALLOWED -import com.tangem.datasource.config.ConfigManager.Companion.IS_TOP_UP_ENABLED import com.tangem.datasource.config.models.Config import com.tangem.datasource.config.models.ConfigModel import com.tangem.datasource.config.models.ConfigValueModel -import com.tangem.datasource.config.models.FeatureModel import javax.inject.Inject import javax.inject.Singleton @@ -16,59 +13,21 @@ internal class ConfigManagerImpl @Inject constructor() : ConfigManager { override var config: Config = Config() private set - private var defaultConfig = Config() - override suspend fun load(configLoader: Loader, onComplete: ((config: Config) -> Unit)?) { configLoader.load { configModel -> - setupFeature(configModel.features) setupConfigValues(configModel.configValues) onComplete?.invoke(config) } } - override fun turnOff(name: String) { - when (name) { - IS_TOP_UP_ENABLED -> config = config.copy(isTopUpEnabled = false) - IS_CREATING_TWIN_CARDS_ALLOWED -> config = config.copy(isCreatingTwinCardsAllowed = false) - } - } - - override fun resetToDefault(name: String) { - when (name) { - IS_TOP_UP_ENABLED -> { - config = config.copy(isTopUpEnabled = defaultConfig.isTopUpEnabled) - } - IS_CREATING_TWIN_CARDS_ALLOWED -> { - config = config.copy(isCreatingTwinCardsAllowed = defaultConfig.isCreatingTwinCardsAllowed) - } - else -> Unit - } - } - - private fun setupFeature(featureModel: FeatureModel?) { - val model = featureModel ?: return - - config = config.copy( - isTopUpEnabled = model.isTopUpEnabled, - isCreatingTwinCardsAllowed = model.isCreatingTwinCardsAllowed, - ) - - defaultConfig = defaultConfig.copy( - isTopUpEnabled = model.isTopUpEnabled, - isCreatingTwinCardsAllowed = model.isCreatingTwinCardsAllowed, - ) - } - private fun setupConfigValues(configValues: ConfigValueModel?) { val values = configValues ?: return config = createConfig(config, values) - defaultConfig = config.copy() } private fun createConfig(config: Config, configValues: ConfigValueModel): Config { return config.copy( - coinMarketCapKey = configValues.coinMarketCapKey, moonPayApiKey = configValues.moonPayApiKey, moonPayApiSecretKey = configValues.moonPayApiSecretKey, mercuryoWidgetId = configValues.mercuryoWidgetId, @@ -105,9 +64,7 @@ internal class ConfigManagerImpl @Inject constructor() : ConfigManager { koinosProApiKey = configValues.koinosProApiKey, ), amplitudeApiKey = configValues.amplitudeApiKey, - sprinklr = configValues.sprinklr, walletConnectProjectId = configValues.walletConnectProjectId, - tangemComAuthorization = configValues.tangemComAuthorization, express = configValues.express, devExpress = configValues.devExpress, stakeKitApiKey = configValues.stakeKitApiKey, diff --git a/core/datasource/src/main/java/com/tangem/datasource/config/FeaturesLocalLoader.kt b/core/datasource/src/main/java/com/tangem/datasource/config/FeaturesLocalLoader.kt index 205537191a..c9e890f0bb 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/config/FeaturesLocalLoader.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/config/FeaturesLocalLoader.kt @@ -3,7 +3,6 @@ package com.tangem.datasource.config import com.tangem.datasource.asset.loader.AssetLoader import com.tangem.datasource.config.models.ConfigModel import com.tangem.datasource.config.models.ConfigValueModel -import com.tangem.datasource.config.models.FeatureModel /** [REDACTED_AUTHOR] @@ -13,12 +12,10 @@ class FeaturesLocalLoader( buildEnvironment: String, ) : Loader { - private val featuresName = "features_$buildEnvironment" private val configValuesName = "tangem-app-config/config_$buildEnvironment" override suspend fun load(onComplete: (ConfigModel) -> Unit) { ConfigModel( - features = assetLoader.load(fileName = featuresName), configValues = assetLoader.load(fileName = configValuesName), ).also(onComplete) } diff --git a/core/datasource/src/main/java/com/tangem/datasource/config/models/ChatConfig.kt b/core/datasource/src/main/java/com/tangem/datasource/config/models/ChatConfig.kt deleted file mode 100644 index 067c8572f3..0000000000 --- a/core/datasource/src/main/java/com/tangem/datasource/config/models/ChatConfig.kt +++ /dev/null @@ -1,13 +0,0 @@ -package com.tangem.datasource.config.models - -import com.squareup.moshi.Json -import com.squareup.moshi.JsonClass - -sealed interface ChatConfig - -@JsonClass(generateAdapter = true) -data class SprinklrConfig( - @Json(name = "appID") val appId: String, - @Json(name = "apiKey") val apiKey: String, - @Json(name = "environment") val environment: String, -) : ChatConfig \ No newline at end of file diff --git a/core/datasource/src/main/java/com/tangem/datasource/config/models/Config.kt b/core/datasource/src/main/java/com/tangem/datasource/config/models/Config.kt index 2b8cadac71..f089a4bb31 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/config/models/Config.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/config/models/Config.kt @@ -3,19 +3,14 @@ package com.tangem.datasource.config.models import com.tangem.blockchain.common.BlockchainSdkConfig data class Config( - val coinMarketCapKey: String = "f6622117-c043-47a0-8975-9d673ce484de", val moonPayApiKey: String = "pk_test_kc90oYTANy7UQdBavDKGfL4K9l6VEPE", val moonPayApiSecretKey: String = "sk_test_V8w4M19LbDjjYOt170s0tGuvXAgyEb1C", val mercuryoWidgetId: String = "", val mercuryoSecret: String = "", val amplitudeApiKey: String = "", val blockchainSdkConfig: BlockchainSdkConfig = BlockchainSdkConfig(), - val isTopUpEnabled: Boolean = false, @Deprecated("Not relevant since version 3.23") - val isCreatingTwinCardsAllowed: Boolean = false, - val sprinklr: SprinklrConfig? = null, val walletConnectProjectId: String = "", - val tangemComAuthorization: String? = null, val express: ExpressModel? = null, val devExpress: ExpressModel? = null, val stakeKitApiKey: String? = null, diff --git a/core/datasource/src/main/java/com/tangem/datasource/config/models/JsonModels.kt b/core/datasource/src/main/java/com/tangem/datasource/config/models/JsonModels.kt index 7a65c4ed6c..56c6b645c6 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/config/models/JsonModels.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/config/models/JsonModels.kt @@ -3,47 +3,35 @@ package com.tangem.datasource.config.models import com.squareup.moshi.Json import com.squareup.moshi.JsonClass -/** -[REDACTED_AUTHOR] - */ - -// TODO remove -class FeatureModel( - val isTopUpEnabled: Boolean, - val isCreatingTwinCardsAllowed: Boolean, -) - @Suppress("LongParameterList") +@JsonClass(generateAdapter = true) class ConfigValueModel( - val coinMarketCapKey: String, - val mercuryoWidgetId: String, - val mercuryoSecret: String, - val moonPayApiKey: String, - val moonPayApiSecretKey: String, - val blockchairApiKeys: List, - val blockchairAuthorizationToken: String?, - val quiknodeSubdomain: String, - val quiknodeApiKey: String, - val bscQuiknodeSubdomain: String, - val bscQuiknodeApiKey: String, - val nowNodesApiKey: String, + @Json(name = "mercuryoWidgetId") val mercuryoWidgetId: String, + @Json(name = "mercuryoSecret") val mercuryoSecret: String, + @Json(name = "moonPayApiKey") val moonPayApiKey: String, + @Json(name = "moonPayApiSecretKey") val moonPayApiSecretKey: String, + @Json(name = "blockchairApiKeys") val blockchairApiKeys: List, + @Json(name = "blockchairAuthorizationToken") val blockchairAuthorizationToken: String?, + @Json(name = "quiknodeSubdomain") val quiknodeSubdomain: String, + @Json(name = "quiknodeApiKey") val quiknodeApiKey: String, + @Json(name = "bscQuiknodeSubdomain") val bscQuiknodeSubdomain: String, + @Json(name = "bscQuiknodeApiKey") val bscQuiknodeApiKey: String, + @Json(name = "nowNodesApiKey") val nowNodesApiKey: String, @Json(name = "getBlockAccessTokens") val getBlockAccessTokens: GetBlockAccessTokens?, @Json(name = "tonCenterApiKey") val tonCenterKeys: TonCenterKeys, - val blockcypherTokens: Set?, - val infuraProjectId: String?, - val sprinklr: SprinklrConfig?, - val tronGridApiKey: String, - val amplitudeApiKey: String, - val kaspaSecondaryApiUrl: String, - val walletConnectProjectId: String, - val tangemComAuthorization: String?, - val chiaFireAcademyApiKey: String?, - val chiaTangemApiKey: String?, - val devExpress: ExpressModel?, - val express: ExpressModel?, + @Json(name = "blockcypherTokens") val blockcypherTokens: Set?, + @Json(name = "infuraProjectId") val infuraProjectId: String?, + @Json(name = "tronGridApiKey") val tronGridApiKey: String, + @Json(name = "amplitudeApiKey") val amplitudeApiKey: String, + @Json(name = "kaspaSecondaryApiUrl") val kaspaSecondaryApiUrl: String, + @Json(name = "walletConnectProjectId") val walletConnectProjectId: String, + @Json(name = "chiaFireAcademyApiKey") val chiaFireAcademyApiKey: String?, + @Json(name = "chiaTangemApiKey") val chiaTangemApiKey: String?, + @Json(name = "devExpress") val devExpress: ExpressModel?, + @Json(name = "express") val express: ExpressModel?, @Json(name = "hederaArkhiaKey") val hederaArkhiaKey: String?, - val polygonScanApiKey: String?, - val stakeKitApiKey: String?, + @Json(name = "polygonScanApiKey") val polygonScanApiKey: String?, + @Json(name = "stakeKitApiKey") val stakeKitApiKey: String?, @Json(name = "bittensorDwellirKey") val bittensorDwellirApiKey: String?, @Json(name = "bittensorOnfinalityKey") val bittensorOnfinalityKey: String?, @Json(name = "koinosProApiKey") val koinosProApiKey: String?, @@ -89,10 +77,9 @@ data class GetBlockToken( ) class ConfigModel( - val features: FeatureModel?, val configValues: ConfigValueModel?, ) { companion object { - fun empty(): ConfigModel = ConfigModel(null, null) + fun empty(): ConfigModel = ConfigModel(null) } } \ No newline at end of file diff --git a/core/datasource/src/test/kotlin/com/tangem/datasource/api/common/config/managers/MockConfigManager.kt b/core/datasource/src/test/kotlin/com/tangem/datasource/api/common/config/managers/MockConfigManager.kt index 4e81af810b..1d8ed73429 100644 --- a/core/datasource/src/test/kotlin/com/tangem/datasource/api/common/config/managers/MockConfigManager.kt +++ b/core/datasource/src/test/kotlin/com/tangem/datasource/api/common/config/managers/MockConfigManager.kt @@ -19,6 +19,4 @@ internal class MockConfigManager : ConfigManager { ) override suspend fun load(configLoader: Loader, onComplete: ((config: Config) -> Unit)?) = Unit - override fun turnOff(name: String) = Unit - override fun resetToDefault(name: String) = Unit } \ No newline at end of file