diff --git a/app/src/main/java/com/tangem/tap/ApplicationEntryPoint.kt b/app/src/main/java/com/tangem/tap/ApplicationEntryPoint.kt index e14a41915f..62ba2f5b49 100644 --- a/app/src/main/java/com/tangem/tap/ApplicationEntryPoint.kt +++ b/app/src/main/java/com/tangem/tap/ApplicationEntryPoint.kt @@ -8,8 +8,8 @@ import com.tangem.core.featuretoggle.manager.FeatureTogglesManager import com.tangem.core.navigation.share.ShareManager import com.tangem.core.navigation.url.UrlOpener import com.tangem.datasource.asset.loader.AssetLoader -import com.tangem.datasource.config.ConfigManager import com.tangem.datasource.connection.NetworkConnectionManager +import com.tangem.datasource.local.config.environment.EnvironmentConfigStorage import com.tangem.datasource.local.preferences.AppPreferencesStore import com.tangem.domain.appcurrency.repository.AppCurrencyRepository import com.tangem.domain.apptheme.GetAppThemeModeUseCase @@ -45,7 +45,7 @@ import com.tangem.tap.domain.walletconnect2.domain.LegacyWalletConnectRepository @Suppress("TooManyFunctions") interface ApplicationEntryPoint { - fun getConfigManager(): ConfigManager + fun getEnvironmentConfigStorage(): EnvironmentConfigStorage fun getAppStateHolder(): AppStateHolder diff --git a/app/src/main/java/com/tangem/tap/TangemApplication.kt b/app/src/main/java/com/tangem/tap/TangemApplication.kt index 7468d27129..073068f66c 100644 --- a/app/src/main/java/com/tangem/tap/TangemApplication.kt +++ b/app/src/main/java/com/tangem/tap/TangemApplication.kt @@ -15,9 +15,9 @@ import com.tangem.core.featuretoggle.manager.FeatureTogglesManager import com.tangem.datasource.api.common.MoshiConverter import com.tangem.datasource.api.common.createNetworkLoggingInterceptor import com.tangem.datasource.asset.loader.AssetLoader -import com.tangem.datasource.config.ConfigManager -import com.tangem.datasource.config.models.Config import com.tangem.datasource.connection.NetworkConnectionManager +import com.tangem.datasource.local.config.environment.EnvironmentConfig +import com.tangem.datasource.local.config.environment.EnvironmentConfigStorage import com.tangem.datasource.local.preferences.AppPreferencesStore import com.tangem.domain.appcurrency.repository.AppCurrencyRepository import com.tangem.domain.apptheme.GetAppThemeModeUseCase @@ -76,8 +76,8 @@ abstract class TangemApplication : Application(), ImageLoaderFactory { private val appStateHolder: AppStateHolder get() = entryPoint.getAppStateHolder() - private val configManager: ConfigManager - get() = entryPoint.getConfigManager() + private val environmentConfigStorage: EnvironmentConfigStorage + get() = entryPoint.getEnvironmentConfigStorage() private val assetLoader: AssetLoader get() = entryPoint.getAssetLoader() @@ -202,10 +202,10 @@ abstract class TangemApplication : Application(), ImageLoaderFactory { runBlocking { featureTogglesManager.init() - val config = configManager.initialize() - store.dispatch(GlobalAction.SetConfigManager(configManager)) + val config = environmentConfigStorage.initialize() + store.dispatch(GlobalAction.SetConfigManager(environmentConfigStorage)) - initWithConfigDependency(config = config) + initWithConfigDependency(environmentConfig = config) } loadNativeLibraries() @@ -223,7 +223,7 @@ abstract class TangemApplication : Application(), ImageLoaderFactory { ) appStateHolder.mainStore = store - walletConnect2Repository.init(projectId = configManager.getConfigSync().walletConnectProjectId) + walletConnect2Repository.init(projectId = environmentConfigStorage.getConfigSync().walletConnectProjectId) } private fun createReduxStore(): Store { @@ -278,12 +278,12 @@ abstract class TangemApplication : Application(), ImageLoaderFactory { System.loadLibrary("TrustWalletCore") } - private fun initWithConfigDependency(config: Config) { - initAnalytics(this, config) + private fun initWithConfigDependency(environmentConfig: EnvironmentConfig) { + initAnalytics(this, environmentConfig) Log.addLogger(logger = tangemSdkLogger) } - private fun initAnalytics(application: Application, config: Config) { + private fun initAnalytics(application: Application, environmentConfig: EnvironmentConfig) { val factory = AnalyticsFactory() factory.addHandlerBuilder(AmplitudeAnalyticsHandler.Builder()) factory.addHandlerBuilder(FirebaseAnalyticsHandler.Builder()) @@ -292,7 +292,7 @@ abstract class TangemApplication : Application(), ImageLoaderFactory { val buildData = AnalyticsHandlerBuilder.Data( application = application, - config = config, + config = environmentConfig, isDebug = BuildConfig.DEBUG, logConfig = LogConfig.analyticsHandlers, jsonConverter = MoshiConverter.sdkMoshiConverter, diff --git a/app/src/main/java/com/tangem/tap/common/analytics/api/AnalyticsHandlerBuilder.kt b/app/src/main/java/com/tangem/tap/common/analytics/api/AnalyticsHandlerBuilder.kt index 4727772b38..742a2178bc 100644 --- a/app/src/main/java/com/tangem/tap/common/analytics/api/AnalyticsHandlerBuilder.kt +++ b/app/src/main/java/com/tangem/tap/common/analytics/api/AnalyticsHandlerBuilder.kt @@ -3,15 +3,15 @@ package com.tangem.tap.common.analytics.api import android.app.Application import com.tangem.common.json.MoshiJsonConverter import com.tangem.core.analytics.api.AnalyticsHandler +import com.tangem.datasource.local.config.environment.EnvironmentConfig import com.tangem.domain.common.AnalyticsHandlersLogConfig -import com.tangem.datasource.config.models.Config interface AnalyticsHandlerBuilder { fun build(data: Data): AnalyticsHandler? data class Data( val application: Application, - val config: Config, + val config: EnvironmentConfig, val isDebug: Boolean, val logConfig: AnalyticsHandlersLogConfig, val jsonConverter: MoshiJsonConverter, diff --git a/app/src/main/java/com/tangem/tap/common/redux/global/GlobalAction.kt b/app/src/main/java/com/tangem/tap/common/redux/global/GlobalAction.kt index ae7d06f836..93fc1a023b 100644 --- a/app/src/main/java/com/tangem/tap/common/redux/global/GlobalAction.kt +++ b/app/src/main/java/com/tangem/tap/common/redux/global/GlobalAction.kt @@ -2,7 +2,7 @@ package com.tangem.tap.common.redux.global import com.tangem.common.CompletionResult import com.tangem.core.analytics.models.AnalyticsParam -import com.tangem.datasource.config.ConfigManager +import com.tangem.datasource.local.config.environment.EnvironmentConfigStorage import com.tangem.domain.appcurrency.model.AppCurrency import com.tangem.domain.models.scan.ScanResponse import com.tangem.domain.redux.StateDialog @@ -67,7 +67,7 @@ sealed class GlobalAction : Action { val walletPublicKey: ByteArray, ) : GlobalAction() - data class SetConfigManager(val configManager: ConfigManager) : GlobalAction() + data class SetConfigManager(val environmentConfigStorage: EnvironmentConfigStorage) : GlobalAction() object ExchangeManager : GlobalAction() { object Init : GlobalAction() { diff --git a/app/src/main/java/com/tangem/tap/common/redux/global/GlobalMiddleware.kt b/app/src/main/java/com/tangem/tap/common/redux/global/GlobalMiddleware.kt index 2d3356afae..a0c16d69f6 100644 --- a/app/src/main/java/com/tangem/tap/common/redux/global/GlobalMiddleware.kt +++ b/app/src/main/java/com/tangem/tap/common/redux/global/GlobalMiddleware.kt @@ -4,7 +4,7 @@ import com.tangem.common.CompletionResult import com.tangem.common.core.TangemSdkError import com.tangem.common.extensions.guard import com.tangem.core.analytics.models.AnalyticsParam -import com.tangem.datasource.config.models.Config +import com.tangem.datasource.local.config.environment.EnvironmentConfig import com.tangem.domain.appcurrency.model.AppCurrency import com.tangem.domain.common.LogConfig import com.tangem.domain.models.scan.CardDTO @@ -57,7 +57,7 @@ private fun handleAction(action: Action, appState: () -> AppState?) { } is GlobalAction.ExchangeManager.Init -> { val appStateSafe = appState() ?: return - val config = appStateSafe.globalState.configManager?.getConfigSync() ?: return + val config = appStateSafe.globalState.environmentConfigStorage?.getConfigSync() ?: return scope.launch { val scanResponseProvider: () -> ScanResponse? = { @@ -140,21 +140,24 @@ private fun restoreAppCurrency() { } } -private fun makeSellExchangeService(config: Config): ExchangeService { +private fun makeSellExchangeService(environmentConfig: EnvironmentConfig): ExchangeService { return MoonPayService( - apiKey = config.moonPayApiKey, - secretKey = config.moonPayApiSecretKey, + apiKey = environmentConfig.moonPayApiKey, + secretKey = environmentConfig.moonPayApiSecretKey, logEnabled = LogConfig.network.moonPayService, ) } -private fun makeBuyExchangeService(config: Config): ExchangeService { +private fun makeBuyExchangeService(environmentConfig: EnvironmentConfig): ExchangeService { return BuyExchangeService( - mercuryoService = makeMercuryoExchangeService(config), + mercuryoService = makeMercuryoExchangeService(environmentConfig), ) } -private fun makeMercuryoExchangeService(config: Config): MercuryoService { - val mercuryoEnvironment = MercuryoEnvironment.prod(config.mercuryoWidgetId, config.mercuryoSecret) +private fun makeMercuryoExchangeService(environmentConfig: EnvironmentConfig): MercuryoService { + val mercuryoEnvironment = MercuryoEnvironment.prod( + environmentConfig.mercuryoWidgetId, + environmentConfig.mercuryoSecret, + ) return MercuryoService(mercuryoEnvironment) } \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/common/redux/global/GlobalReducer.kt b/app/src/main/java/com/tangem/tap/common/redux/global/GlobalReducer.kt index cec7015f94..223296f720 100644 --- a/app/src/main/java/com/tangem/tap/common/redux/global/GlobalReducer.kt +++ b/app/src/main/java/com/tangem/tap/common/redux/global/GlobalReducer.kt @@ -48,7 +48,7 @@ fun globalReducer(action: Action, state: AppState, appStateHolder: AppStateHolde globalState.copy(appCurrency = action.appCurrency) } is GlobalAction.SetConfigManager -> { - globalState.copy(configManager = action.configManager) + globalState.copy(environmentConfigStorage = action.environmentConfigStorage) } is GlobalAction.UpdateWalletSignedHashes -> { val card = globalState.scanResponse?.card ?: return globalState diff --git a/app/src/main/java/com/tangem/tap/common/redux/global/GlobalState.kt b/app/src/main/java/com/tangem/tap/common/redux/global/GlobalState.kt index 199835d5ef..054469bc26 100644 --- a/app/src/main/java/com/tangem/tap/common/redux/global/GlobalState.kt +++ b/app/src/main/java/com/tangem/tap/common/redux/global/GlobalState.kt @@ -1,6 +1,6 @@ package com.tangem.tap.common.redux.global -import com.tangem.datasource.config.ConfigManager +import com.tangem.datasource.local.config.environment.EnvironmentConfigStorage import com.tangem.domain.appcurrency.model.AppCurrency import com.tangem.domain.apptheme.model.AppThemeMode import com.tangem.domain.models.scan.ScanResponse @@ -16,7 +16,7 @@ data class GlobalState( val onboardingState: OnboardingState = OnboardingState(), val cardVerifiedOnline: Boolean = false, val tapWalletManager: TapWalletManager = TapWalletManager(), - val configManager: ConfigManager? = null, + val environmentConfigStorage: EnvironmentConfigStorage? = null, val appCurrency: AppCurrency = AppCurrency.Default, val scanCardFailsCounter: Int = 0, val dialog: StateDialog? = null, diff --git a/app/src/main/java/com/tangem/tap/network/auth/DefaultStakeKitAuthProvider.kt b/app/src/main/java/com/tangem/tap/network/auth/DefaultStakeKitAuthProvider.kt index 2e8c9cde6d..ba0534ae88 100644 --- a/app/src/main/java/com/tangem/tap/network/auth/DefaultStakeKitAuthProvider.kt +++ b/app/src/main/java/com/tangem/tap/network/auth/DefaultStakeKitAuthProvider.kt @@ -1,13 +1,13 @@ package com.tangem.tap.network.auth -import com.tangem.datasource.config.ConfigManager +import com.tangem.datasource.local.config.environment.EnvironmentConfigStorage import com.tangem.lib.auth.StakeKitAuthProvider internal class DefaultStakeKitAuthProvider( - private val configManager: ConfigManager, + private val environmentConfigStorage: EnvironmentConfigStorage, ) : StakeKitAuthProvider { override fun getApiKey(): String { - return configManager.getConfigSync().stakeKitApiKey ?: error("No StakeKit api key provided") + return environmentConfigStorage.getConfigSync().stakeKitApiKey ?: error("No StakeKit api key provided") } } \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/network/auth/di/AuthModule.kt b/app/src/main/java/com/tangem/tap/network/auth/di/AuthModule.kt index 41aa591911..54d0fdbc78 100644 --- a/app/src/main/java/com/tangem/tap/network/auth/di/AuthModule.kt +++ b/app/src/main/java/com/tangem/tap/network/auth/di/AuthModule.kt @@ -1,7 +1,7 @@ package com.tangem.tap.network.auth.di import com.tangem.datasource.api.common.AuthProvider -import com.tangem.datasource.config.ConfigManager +import com.tangem.datasource.local.config.environment.EnvironmentConfigStorage import com.tangem.datasource.local.userwallet.UserWalletsStore import com.tangem.lib.auth.ExpressAuthProvider import com.tangem.lib.auth.StakeKitAuthProvider @@ -35,8 +35,8 @@ class AuthModule { @Provides @Singleton - fun provideStakeKitAuthProvider(configManager: ConfigManager): StakeKitAuthProvider { - return DefaultStakeKitAuthProvider(configManager) + fun provideStakeKitAuthProvider(environmentConfigStorage: EnvironmentConfigStorage): StakeKitAuthProvider { + return DefaultStakeKitAuthProvider(environmentConfigStorage) } @Provides diff --git a/core/datasource/src/main/java/com/tangem/datasource/api/common/config/Express.kt b/core/datasource/src/main/java/com/tangem/datasource/api/common/config/Express.kt index e87b6490b9..2442807b3c 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/api/common/config/Express.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/api/common/config/Express.kt @@ -1,7 +1,7 @@ package com.tangem.datasource.api.common.config import com.tangem.datasource.BuildConfig -import com.tangem.datasource.config.ConfigManager +import com.tangem.datasource.local.config.environment.EnvironmentConfigStorage import com.tangem.datasource.utils.RequestHeader import com.tangem.lib.auth.ExpressAuthProvider import com.tangem.utils.Provider @@ -10,12 +10,12 @@ import com.tangem.utils.version.AppVersionProvider /** * Express [ApiConfig] * - * @property configManager config manager - * @property expressAuthProvider express auth provider - * @property appVersionProvider app version provider + * @property environmentConfigStorage environment config storage + * @property expressAuthProvider express auth provider + * @property appVersionProvider app version provider */ internal class Express( - private val configManager: ConfigManager, + private val environmentConfigStorage: EnvironmentConfigStorage, private val expressAuthProvider: ExpressAuthProvider, private val appVersionProvider: AppVersionProvider, ) : ApiConfig() { @@ -55,9 +55,9 @@ internal class Express( private fun getApiKey(isProd: Boolean): String { return if (isProd) { - configManager.getConfigSync().express + environmentConfigStorage.getConfigSync().express } else { - configManager.getConfigSync().devExpress + environmentConfigStorage.getConfigSync().devExpress } ?.apiKey ?: error("No express config provided") diff --git a/core/datasource/src/main/java/com/tangem/datasource/api/tangemTech/TangemTechApi.kt b/core/datasource/src/main/java/com/tangem/datasource/api/tangemTech/TangemTechApi.kt index 4a52e5d13e..abfe1050de 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/api/tangemTech/TangemTechApi.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/api/tangemTech/TangemTechApi.kt @@ -4,7 +4,7 @@ import com.tangem.datasource.api.common.response.ApiResponse import com.tangem.datasource.api.promotion.models.PromotionInfoResponse import com.tangem.datasource.api.tangemTech.models.* import com.tangem.datasource.api.utils.ReadTimeout -import com.tangem.datasource.config.models.ProviderModel +import com.tangem.datasource.local.config.environment.models.ProviderModel import retrofit2.http.* import java.util.concurrent.TimeUnit 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 deleted file mode 100644 index 870bd611a2..0000000000 --- a/core/datasource/src/main/java/com/tangem/datasource/config/ConfigManager.kt +++ /dev/null @@ -1,21 +0,0 @@ -package com.tangem.datasource.config - -import com.tangem.datasource.config.models.Config -import kotlinx.coroutines.flow.Flow - -/** - * Config manager - * -[REDACTED_AUTHOR] - */ -interface ConfigManager { - - /** Initialize and return [Config] */ - suspend fun initialize(): Config - - /** Get [Config] as [Flow] */ - fun getConfig(): Flow - - /** Get [Config] synchronously */ - fun getConfigSync(): Config -} \ No newline at end of file diff --git a/core/datasource/src/main/java/com/tangem/datasource/config/DefaultConfigManager.kt b/core/datasource/src/main/java/com/tangem/datasource/config/DefaultConfigManager.kt deleted file mode 100644 index 68269dcbbc..0000000000 --- a/core/datasource/src/main/java/com/tangem/datasource/config/DefaultConfigManager.kt +++ /dev/null @@ -1,42 +0,0 @@ -package com.tangem.datasource.config - -import com.tangem.datasource.BuildConfig -import com.tangem.datasource.asset.loader.AssetLoader -import com.tangem.datasource.config.converter.EnvironmentConfigConverter -import com.tangem.datasource.config.models.Config -import com.tangem.datasource.config.models.ConfigValueModel -import com.tangem.datasource.local.datastore.RuntimeStateStore -import kotlinx.coroutines.flow.Flow -import timber.log.Timber - -/** - * Default config manager - * - * @property assetLoader asset loader - * @property configStore config store - */ -internal class DefaultConfigManager( - private val assetLoader: AssetLoader, - private val configStore: RuntimeStateStore, -) : ConfigManager { - - override suspend fun initialize(): Config { - val configValueModel = assetLoader.load(fileName = CONFIG_FILE_NAME) - ?: return configStore.get().value - - val config = EnvironmentConfigConverter.convert(value = configValueModel) - configStore.store(value = config) - - Timber.i("Config [$CONFIG_FILE_NAME] loaded successfully") - - return config - } - - override fun getConfig(): Flow = configStore.get() - - override fun getConfigSync(): Config = configStore.get().value - - private companion object { - const val CONFIG_FILE_NAME = "tangem-app-config/config_${BuildConfig.ENVIRONMENT}" - } -} \ No newline at end of file diff --git a/core/datasource/src/main/java/com/tangem/datasource/config/models/ExpressModel.kt b/core/datasource/src/main/java/com/tangem/datasource/config/models/ExpressModel.kt deleted file mode 100644 index 19f97e4d8e..0000000000 --- a/core/datasource/src/main/java/com/tangem/datasource/config/models/ExpressModel.kt +++ /dev/null @@ -1,12 +0,0 @@ -package com.tangem.datasource.config.models - -import com.squareup.moshi.Json -import com.squareup.moshi.JsonClass - -@JsonClass(generateAdapter = true) -data class ExpressModel( - @Json(name = "apiKey") - val apiKey: String, - @Json(name = "signVerifierPublicKey") - val signVerifierPublicKey: String, -) \ No newline at end of file diff --git a/core/datasource/src/main/java/com/tangem/datasource/config/models/TonCenterKeys.kt b/core/datasource/src/main/java/com/tangem/datasource/config/models/TonCenterKeys.kt deleted file mode 100644 index c907a8f505..0000000000 --- a/core/datasource/src/main/java/com/tangem/datasource/config/models/TonCenterKeys.kt +++ /dev/null @@ -1,12 +0,0 @@ -package com.tangem.datasource.config.models - -import com.squareup.moshi.Json -import com.squareup.moshi.JsonClass - -@JsonClass(generateAdapter = true) -data class TonCenterKeys( - @Json(name = "mainnet") - val mainnet: String, - @Json(name = "testnet") - val testnet: String, -) \ No newline at end of file diff --git a/core/datasource/src/main/java/com/tangem/datasource/crypto/Sha256SignatureVerifier.kt b/core/datasource/src/main/java/com/tangem/datasource/crypto/Sha256SignatureVerifier.kt index 1452e5f68b..6938d499d7 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/crypto/Sha256SignatureVerifier.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/crypto/Sha256SignatureVerifier.kt @@ -5,10 +5,10 @@ import com.tangem.crypto.CryptoUtils import com.tangem.datasource.api.common.config.ApiConfig import com.tangem.datasource.api.common.config.ApiEnvironment import com.tangem.datasource.api.common.config.managers.ApiConfigsManager -import com.tangem.datasource.config.ConfigManager +import com.tangem.datasource.local.config.environment.EnvironmentConfigStorage internal class Sha256SignatureVerifier( - private val configManager: ConfigManager, + private val environmentConfigStorage: EnvironmentConfigStorage, private val apiConfigsManager: ApiConfigsManager, ) : DataSignatureVerifier { @@ -24,8 +24,8 @@ internal class Sha256SignatureVerifier( private fun getPubKey(): String? { val expressConfig = apiConfigsManager.getEnvironmentConfig(ApiConfig.ID.Express) return when (expressConfig.environment) { - ApiEnvironment.PROD -> configManager.getConfigSync().express?.signVerifierPublicKey - else -> configManager.getConfigSync().devExpress?.signVerifierPublicKey + ApiEnvironment.PROD -> environmentConfigStorage.getConfigSync().express?.signVerifierPublicKey + else -> environmentConfigStorage.getConfigSync().devExpress?.signVerifierPublicKey } } } \ No newline at end of file diff --git a/core/datasource/src/main/java/com/tangem/datasource/di/ApiConfigsModule.kt b/core/datasource/src/main/java/com/tangem/datasource/di/ApiConfigsModule.kt index 1dd7fb700c..d900af3269 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/di/ApiConfigsModule.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/di/ApiConfigsModule.kt @@ -4,7 +4,7 @@ import com.tangem.datasource.api.common.config.ApiConfig import com.tangem.datasource.api.common.config.Express import com.tangem.datasource.api.common.config.StakeKit import com.tangem.datasource.api.common.config.TangemTech -import com.tangem.datasource.config.ConfigManager +import com.tangem.datasource.local.config.environment.EnvironmentConfigStorage import com.tangem.lib.auth.ExpressAuthProvider import com.tangem.lib.auth.StakeKitAuthProvider import com.tangem.utils.version.AppVersionProvider @@ -21,11 +21,11 @@ internal object ApiConfigsModule { @Provides @IntoSet fun provideExpressConfig( - configManager: ConfigManager, + environmentConfigStorage: EnvironmentConfigStorage, expressAuthProvider: ExpressAuthProvider, appVersionProvider: AppVersionProvider, ): ApiConfig { - return Express(configManager, expressAuthProvider, appVersionProvider) + return Express(environmentConfigStorage, expressAuthProvider, appVersionProvider) } @Provides diff --git a/core/datasource/src/main/java/com/tangem/datasource/di/ConfigModule.kt b/core/datasource/src/main/java/com/tangem/datasource/di/ConfigModule.kt deleted file mode 100644 index f46bff1f09..0000000000 --- a/core/datasource/src/main/java/com/tangem/datasource/di/ConfigModule.kt +++ /dev/null @@ -1,26 +0,0 @@ -package com.tangem.datasource.di - -import com.tangem.datasource.asset.loader.AssetLoader -import com.tangem.datasource.config.ConfigManager -import com.tangem.datasource.config.DefaultConfigManager -import com.tangem.datasource.config.models.Config -import com.tangem.datasource.local.datastore.RuntimeStateStore -import dagger.Module -import dagger.Provides -import dagger.hilt.InstallIn -import dagger.hilt.components.SingletonComponent -import javax.inject.Singleton - -@Module -@InstallIn(SingletonComponent::class) -internal object ConfigModule { - - @Provides - @Singleton - fun providesConfigManager(assetLoader: AssetLoader): ConfigManager { - return DefaultConfigManager( - assetLoader = assetLoader, - configStore = RuntimeStateStore(defaultValue = Config()), - ) - } -} \ No newline at end of file diff --git a/core/datasource/src/main/java/com/tangem/datasource/di/MoshiModule.kt b/core/datasource/src/main/java/com/tangem/datasource/di/MoshiModule.kt index e04042a8b4..d0708073b3 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/di/MoshiModule.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/di/MoshiModule.kt @@ -4,11 +4,11 @@ import com.squareup.moshi.Moshi import com.squareup.moshi.adapters.PolymorphicJsonAdapterFactory import com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory import com.tangem.common.json.MoshiJsonConverter -import com.tangem.datasource.api.common.adapter.* import com.tangem.datasource.api.common.adapter.BigDecimalAdapter import com.tangem.datasource.api.common.adapter.DateTimeAdapter import com.tangem.datasource.api.common.adapter.LocalDateAdapter -import com.tangem.datasource.config.models.ProviderModel +import com.tangem.datasource.api.common.adapter.addStakeKitEnumFallbackAdapters +import com.tangem.datasource.local.config.environment.models.ProviderModel import dagger.Module import dagger.Provides import dagger.hilt.InstallIn diff --git a/core/datasource/src/main/java/com/tangem/datasource/di/SecurityModule.kt b/core/datasource/src/main/java/com/tangem/datasource/di/SecurityModule.kt index b4550b25b2..82d2ca69da 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/di/SecurityModule.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/di/SecurityModule.kt @@ -1,9 +1,9 @@ package com.tangem.datasource.di import com.tangem.datasource.api.common.config.managers.ApiConfigsManager -import com.tangem.datasource.config.ConfigManager import com.tangem.datasource.crypto.DataSignatureVerifier import com.tangem.datasource.crypto.Sha256SignatureVerifier +import com.tangem.datasource.local.config.environment.EnvironmentConfigStorage import dagger.Module import dagger.Provides import dagger.hilt.InstallIn @@ -17,9 +17,9 @@ internal object SecurityModule { @Provides @Singleton fun provideDataSignatureVerifier( - configManager: ConfigManager, + environmentConfigStorage: EnvironmentConfigStorage, apiConfigsManager: ApiConfigsManager, ): DataSignatureVerifier { - return Sha256SignatureVerifier(configManager, apiConfigsManager) + return Sha256SignatureVerifier(environmentConfigStorage, apiConfigsManager) } } \ No newline at end of file diff --git a/core/datasource/src/main/java/com/tangem/datasource/di/TestnetTokensStorageModule.kt b/core/datasource/src/main/java/com/tangem/datasource/di/TestnetTokensStorageModule.kt deleted file mode 100644 index e23f80cbb6..0000000000 --- a/core/datasource/src/main/java/com/tangem/datasource/di/TestnetTokensStorageModule.kt +++ /dev/null @@ -1,24 +0,0 @@ -package com.tangem.datasource.di - -import com.tangem.datasource.asset.loader.AssetLoader -import com.tangem.datasource.local.testnet.DefaultTestnetTokensStorage -import com.tangem.datasource.local.testnet.TestnetTokensStorage -import dagger.Module -import dagger.Provides -import dagger.hilt.InstallIn -import dagger.hilt.components.SingletonComponent -import javax.inject.Singleton - -/** -[REDACTED_AUTHOR] - */ -@Module -@InstallIn(SingletonComponent::class) -internal object TestnetTokensStorageModule { - - @Provides - @Singleton - fun providesTestnetTokensStorage(assetLoader: AssetLoader): TestnetTokensStorage { - return DefaultTestnetTokensStorage(assetLoader) - } -} \ No newline at end of file diff --git a/core/datasource/src/main/java/com/tangem/datasource/di/local/config/ConfigModule.kt b/core/datasource/src/main/java/com/tangem/datasource/di/local/config/ConfigModule.kt new file mode 100644 index 0000000000..174411aba5 --- /dev/null +++ b/core/datasource/src/main/java/com/tangem/datasource/di/local/config/ConfigModule.kt @@ -0,0 +1,34 @@ +package com.tangem.datasource.di.local.config + +import com.tangem.datasource.asset.loader.AssetLoader +import com.tangem.datasource.local.config.environment.DefaultEnvironmentConfigStorage +import com.tangem.datasource.local.config.environment.EnvironmentConfig +import com.tangem.datasource.local.config.environment.EnvironmentConfigStorage +import com.tangem.datasource.local.config.testnet.DefaultTestnetTokensStorage +import com.tangem.datasource.local.config.testnet.TestnetTokensStorage +import com.tangem.datasource.local.datastore.RuntimeStateStore +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn +import dagger.hilt.components.SingletonComponent +import javax.inject.Singleton + +@Module +@InstallIn(SingletonComponent::class) +internal object ConfigModule { + + @Provides + @Singleton + fun provideEnvironmentConfigStorage(assetLoader: AssetLoader): EnvironmentConfigStorage { + return DefaultEnvironmentConfigStorage( + assetLoader = assetLoader, + environmentConfigStore = RuntimeStateStore(defaultValue = EnvironmentConfig()), + ) + } + + @Provides + @Singleton + fun providesTestnetTokensStorage(assetLoader: AssetLoader): TestnetTokensStorage { + return DefaultTestnetTokensStorage(assetLoader) + } +} \ No newline at end of file diff --git a/core/datasource/src/main/java/com/tangem/datasource/local/config/environment/DefaultEnvironmentConfigStorage.kt b/core/datasource/src/main/java/com/tangem/datasource/local/config/environment/DefaultEnvironmentConfigStorage.kt new file mode 100644 index 0000000000..1ad363973d --- /dev/null +++ b/core/datasource/src/main/java/com/tangem/datasource/local/config/environment/DefaultEnvironmentConfigStorage.kt @@ -0,0 +1,41 @@ +package com.tangem.datasource.local.config.environment + +import com.tangem.datasource.BuildConfig +import com.tangem.datasource.asset.loader.AssetLoader +import com.tangem.datasource.local.config.environment.converter.EnvironmentConfigConverter +import com.tangem.datasource.local.config.environment.models.EnvironmentConfigModel +import com.tangem.datasource.local.datastore.RuntimeStateStore +import kotlinx.coroutines.flow.Flow +import timber.log.Timber + +/** + * Default implementation for storing [EnvironmentConfig] + * + * @property assetLoader asset loader + * @property environmentConfigStore config store + */ +internal class DefaultEnvironmentConfigStorage( + private val assetLoader: AssetLoader, + private val environmentConfigStore: RuntimeStateStore, +) : EnvironmentConfigStorage { + + override suspend fun initialize(): EnvironmentConfig { + val environmentConfigModel = assetLoader.load(fileName = CONFIG_FILE_NAME) + ?: return environmentConfigStore.get().value + + val config = EnvironmentConfigConverter.convert(value = environmentConfigModel) + environmentConfigStore.store(value = config) + + Timber.i("Config [$CONFIG_FILE_NAME] loaded successfully") + + return config + } + + override fun getConfig(): Flow = environmentConfigStore.get() + + override fun getConfigSync(): EnvironmentConfig = environmentConfigStore.get().value + + private companion object { + const val CONFIG_FILE_NAME = "tangem-app-config/config_${BuildConfig.ENVIRONMENT}" + } +} \ 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/local/config/environment/EnvironmentConfig.kt similarity index 79% rename from core/datasource/src/main/java/com/tangem/datasource/config/models/Config.kt rename to core/datasource/src/main/java/com/tangem/datasource/local/config/environment/EnvironmentConfig.kt index f089a4bb31..4ef8709d6d 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/config/models/Config.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/local/config/environment/EnvironmentConfig.kt @@ -1,8 +1,9 @@ -package com.tangem.datasource.config.models +package com.tangem.datasource.local.config.environment import com.tangem.blockchain.common.BlockchainSdkConfig +import com.tangem.datasource.local.config.environment.models.ExpressModel -data class Config( +data class EnvironmentConfig( val moonPayApiKey: String = "pk_test_kc90oYTANy7UQdBavDKGfL4K9l6VEPE", val moonPayApiSecretKey: String = "sk_test_V8w4M19LbDjjYOt170s0tGuvXAgyEb1C", val mercuryoWidgetId: String = "", diff --git a/core/datasource/src/main/java/com/tangem/datasource/local/config/environment/EnvironmentConfigStorage.kt b/core/datasource/src/main/java/com/tangem/datasource/local/config/environment/EnvironmentConfigStorage.kt new file mode 100644 index 0000000000..a46edc5d9a --- /dev/null +++ b/core/datasource/src/main/java/com/tangem/datasource/local/config/environment/EnvironmentConfigStorage.kt @@ -0,0 +1,20 @@ +package com.tangem.datasource.local.config.environment + +import kotlinx.coroutines.flow.Flow + +/** + * Storage for [EnvironmentConfig] + * +[REDACTED_AUTHOR] + */ +interface EnvironmentConfigStorage { + + /** Initialize and return [EnvironmentConfig] */ + suspend fun initialize(): EnvironmentConfig + + /** Get [EnvironmentConfig] as [Flow] */ + fun getConfig(): Flow + + /** Get [EnvironmentConfig] synchronously */ + fun getConfigSync(): EnvironmentConfig +} \ No newline at end of file diff --git a/core/datasource/src/main/java/com/tangem/datasource/config/converter/BlockchainSDKConfigConverter.kt b/core/datasource/src/main/java/com/tangem/datasource/local/config/environment/converter/BlockchainSDKConfigConverter.kt similarity index 90% rename from core/datasource/src/main/java/com/tangem/datasource/config/converter/BlockchainSDKConfigConverter.kt rename to core/datasource/src/main/java/com/tangem/datasource/local/config/environment/converter/BlockchainSDKConfigConverter.kt index cbe0ec58bd..3ed335349d 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/config/converter/BlockchainSDKConfigConverter.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/local/config/environment/converter/BlockchainSDKConfigConverter.kt @@ -1,17 +1,17 @@ -package com.tangem.datasource.config.converter +package com.tangem.datasource.local.config.environment.converter import com.tangem.blockchain.common.* -import com.tangem.datasource.config.models.ConfigValueModel +import com.tangem.datasource.local.config.environment.models.EnvironmentConfigModel import com.tangem.utils.converter.Converter /** - * Converts [ConfigValueModel] to [BlockchainSdkConfig] + * Converts [EnvironmentConfigModel] to [BlockchainSdkConfig] * [REDACTED_AUTHOR] */ -internal object BlockchainSDKConfigConverter : Converter { +internal object BlockchainSDKConfigConverter : Converter { - override fun convert(value: ConfigValueModel): BlockchainSdkConfig { + override fun convert(value: EnvironmentConfigModel): BlockchainSdkConfig { return BlockchainSdkConfig( blockchairCredentials = BlockchairCredentials( apiKey = value.blockchairApiKeys, @@ -45,7 +45,7 @@ internal object BlockchainSDKConfigConverter : Converter GetBlockCredentials( xrp = GetBlockAccessToken(jsonRpc = accessTokens.xrp?.jsonRPC), diff --git a/core/datasource/src/main/java/com/tangem/datasource/config/converter/EnvironmentConfigConverter.kt b/core/datasource/src/main/java/com/tangem/datasource/local/config/environment/converter/EnvironmentConfigConverter.kt similarity index 56% rename from core/datasource/src/main/java/com/tangem/datasource/config/converter/EnvironmentConfigConverter.kt rename to core/datasource/src/main/java/com/tangem/datasource/local/config/environment/converter/EnvironmentConfigConverter.kt index bd78bce60e..02d7967f47 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/config/converter/EnvironmentConfigConverter.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/local/config/environment/converter/EnvironmentConfigConverter.kt @@ -1,18 +1,18 @@ -package com.tangem.datasource.config.converter +package com.tangem.datasource.local.config.environment.converter -import com.tangem.datasource.config.models.Config -import com.tangem.datasource.config.models.ConfigValueModel +import com.tangem.datasource.local.config.environment.EnvironmentConfig +import com.tangem.datasource.local.config.environment.models.EnvironmentConfigModel import com.tangem.utils.converter.Converter /** - * Converter from [ConfigValueModel] to [Config] + * Converter from [EnvironmentConfigModel] to [EnvironmentConfig] * [REDACTED_AUTHOR] */ -internal object EnvironmentConfigConverter : Converter { +internal object EnvironmentConfigConverter : Converter { - override fun convert(value: ConfigValueModel): Config { - return Config( + override fun convert(value: EnvironmentConfigModel): EnvironmentConfig { + return EnvironmentConfig( moonPayApiKey = value.moonPayApiKey, moonPayApiSecretKey = value.moonPayApiSecretKey, mercuryoWidgetId = value.mercuryoWidgetId, diff --git a/core/datasource/src/main/java/com/tangem/datasource/config/models/JsonModels.kt b/core/datasource/src/main/java/com/tangem/datasource/local/config/environment/models/EnvironmentConfigModel.kt similarity index 89% rename from core/datasource/src/main/java/com/tangem/datasource/config/models/JsonModels.kt rename to core/datasource/src/main/java/com/tangem/datasource/local/config/environment/models/EnvironmentConfigModel.kt index 3a88d95799..4e866435e9 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/config/models/JsonModels.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/local/config/environment/models/EnvironmentConfigModel.kt @@ -1,11 +1,11 @@ -package com.tangem.datasource.config.models +package com.tangem.datasource.local.config.environment.models import com.squareup.moshi.Json import com.squareup.moshi.JsonClass @Suppress("LongParameterList") @JsonClass(generateAdapter = true) -class ConfigValueModel( +class EnvironmentConfigModel( @Json(name = "mercuryoWidgetId") val mercuryoWidgetId: String, @Json(name = "mercuryoSecret") val mercuryoSecret: String, @Json(name = "moonPayApiKey") val moonPayApiKey: String, @@ -68,10 +68,24 @@ data class GetBlockAccessTokens( @Json(name = "filecoin") val filecoin: GetBlockToken?, ) +@JsonClass(generateAdapter = true) +data class TonCenterKeys( + @Json(name = "mainnet") val mainnet: String, + @Json(name = "testnet") val testnet: String, +) + @JsonClass(generateAdapter = true) data class GetBlockToken( @Json(name = "jsonRpc") val jsonRPC: String?, @Json(name = "blockBookRest") val blockBookRest: String?, @Json(name = "rest") val rest: String?, @Json(name = "rosetta") val rosetta: String?, +) + +@JsonClass(generateAdapter = true) +data class ExpressModel( + @Json(name = "apiKey") + val apiKey: String, + @Json(name = "signVerifierPublicKey") + val signVerifierPublicKey: String, ) \ No newline at end of file diff --git a/core/datasource/src/main/java/com/tangem/datasource/config/models/ProviderModel.kt b/core/datasource/src/main/java/com/tangem/datasource/local/config/environment/models/ProviderModel.kt similarity index 90% rename from core/datasource/src/main/java/com/tangem/datasource/config/models/ProviderModel.kt rename to core/datasource/src/main/java/com/tangem/datasource/local/config/environment/models/ProviderModel.kt index 6bd7f5c07a..5406fbc35d 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/config/models/ProviderModel.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/local/config/environment/models/ProviderModel.kt @@ -1,4 +1,4 @@ -package com.tangem.datasource.config.models +package com.tangem.datasource.local.config.environment.models import com.squareup.moshi.Json diff --git a/core/datasource/src/main/java/com/tangem/datasource/local/testnet/DefaultTestnetTokensStorage.kt b/core/datasource/src/main/java/com/tangem/datasource/local/config/testnet/DefaultTestnetTokensStorage.kt similarity index 81% rename from core/datasource/src/main/java/com/tangem/datasource/local/testnet/DefaultTestnetTokensStorage.kt rename to core/datasource/src/main/java/com/tangem/datasource/local/config/testnet/DefaultTestnetTokensStorage.kt index b88bdda0bc..8ac6b1594c 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/local/testnet/DefaultTestnetTokensStorage.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/local/config/testnet/DefaultTestnetTokensStorage.kt @@ -1,7 +1,7 @@ -package com.tangem.datasource.local.testnet +package com.tangem.datasource.local.config.testnet import com.tangem.datasource.asset.loader.AssetLoader -import com.tangem.datasource.local.testnet.models.TestnetTokensConfig +import com.tangem.datasource.local.config.testnet.models.TestnetTokensConfig /** * Default implementation for storing testnet tokens data diff --git a/core/datasource/src/main/java/com/tangem/datasource/local/testnet/TestnetTokensStorage.kt b/core/datasource/src/main/java/com/tangem/datasource/local/config/testnet/TestnetTokensStorage.kt similarity index 59% rename from core/datasource/src/main/java/com/tangem/datasource/local/testnet/TestnetTokensStorage.kt rename to core/datasource/src/main/java/com/tangem/datasource/local/config/testnet/TestnetTokensStorage.kt index 7cbd7a6602..f6aec3c988 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/local/testnet/TestnetTokensStorage.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/local/config/testnet/TestnetTokensStorage.kt @@ -1,6 +1,6 @@ -package com.tangem.datasource.local.testnet +package com.tangem.datasource.local.config.testnet -import com.tangem.datasource.local.testnet.models.TestnetTokensConfig +import com.tangem.datasource.local.config.testnet.models.TestnetTokensConfig /** * Storage of testnet tokens data diff --git a/core/datasource/src/main/java/com/tangem/datasource/local/testnet/models/TestnetTokensConfig.kt b/core/datasource/src/main/java/com/tangem/datasource/local/config/testnet/models/TestnetTokensConfig.kt similarity index 93% rename from core/datasource/src/main/java/com/tangem/datasource/local/testnet/models/TestnetTokensConfig.kt rename to core/datasource/src/main/java/com/tangem/datasource/local/config/testnet/models/TestnetTokensConfig.kt index 1e619014cf..4f2f78baff 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/local/testnet/models/TestnetTokensConfig.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/local/config/testnet/models/TestnetTokensConfig.kt @@ -1,4 +1,4 @@ -package com.tangem.datasource.local.testnet.models +package com.tangem.datasource.local.config.testnet.models import com.squareup.moshi.Json @@ -7,6 +7,7 @@ import com.squareup.moshi.Json * * @property tokens testnet tokens list */ +// TODO: use CoinsResponse data class TestnetTokensConfig( @Json(name = "coins") val tokens: List, ) { 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 deleted file mode 100644 index 294c72030a..0000000000 --- a/core/datasource/src/test/kotlin/com/tangem/datasource/api/common/config/managers/MockConfigManager.kt +++ /dev/null @@ -1,28 +0,0 @@ -package com.tangem.datasource.api.common.config.managers - -import com.tangem.datasource.config.ConfigManager -import com.tangem.datasource.config.models.Config -import com.tangem.datasource.config.models.ExpressModel -import kotlinx.coroutines.flow.flowOf - -/** - * Mock [ConfigManager] implementation for [ProdApiConfigsManagerTest] - * -[REDACTED_AUTHOR] - */ -internal class MockConfigManager : ConfigManager { - - private val config = Config( - express = ExpressModel(apiKey = EXPRESS_API_KEY, signVerifierPublicKey = "vocibus"), - devExpress = ExpressModel(apiKey = EXPRESS_DEV_API_KEY, signVerifierPublicKey = "pellentesque"), - ) - - override suspend fun initialize() = config - override fun getConfig() = flowOf(config) - override fun getConfigSync() = config - - companion object { - const val EXPRESS_API_KEY = "express_api_key" - const val EXPRESS_DEV_API_KEY = "express_dev_api_key" - } -} \ No newline at end of file diff --git a/core/datasource/src/test/kotlin/com/tangem/datasource/api/common/config/managers/MockEnvironmentConfigStorage.kt b/core/datasource/src/test/kotlin/com/tangem/datasource/api/common/config/managers/MockEnvironmentConfigStorage.kt new file mode 100644 index 0000000000..d87a65a5ce --- /dev/null +++ b/core/datasource/src/test/kotlin/com/tangem/datasource/api/common/config/managers/MockEnvironmentConfigStorage.kt @@ -0,0 +1,28 @@ +package com.tangem.datasource.api.common.config.managers + +import com.tangem.datasource.local.config.environment.EnvironmentConfig +import com.tangem.datasource.local.config.environment.EnvironmentConfigStorage +import com.tangem.datasource.local.config.environment.models.ExpressModel +import kotlinx.coroutines.flow.flowOf + +/** + * Mock [EnvironmentConfigStorage] implementation for [ProdApiConfigsManagerTest] + * +[REDACTED_AUTHOR] + */ +internal class MockEnvironmentConfigStorage : EnvironmentConfigStorage { + + private val environmentConfig = EnvironmentConfig( + express = ExpressModel(apiKey = EXPRESS_API_KEY, signVerifierPublicKey = "vocibus"), + devExpress = ExpressModel(apiKey = EXPRESS_DEV_API_KEY, signVerifierPublicKey = "pellentesque"), + ) + + override suspend fun initialize() = environmentConfig + override fun getConfig() = flowOf(environmentConfig) + override fun getConfigSync() = environmentConfig + + companion object { + const val EXPRESS_API_KEY = "express_api_key" + const val EXPRESS_DEV_API_KEY = "express_dev_api_key" + } +} \ No newline at end of file diff --git a/core/datasource/src/test/kotlin/com/tangem/datasource/api/common/config/managers/ProdApiConfigsManagerTest.kt b/core/datasource/src/test/kotlin/com/tangem/datasource/api/common/config/managers/ProdApiConfigsManagerTest.kt index 96088cf50f..3bd2cd29e2 100644 --- a/core/datasource/src/test/kotlin/com/tangem/datasource/api/common/config/managers/ProdApiConfigsManagerTest.kt +++ b/core/datasource/src/test/kotlin/com/tangem/datasource/api/common/config/managers/ProdApiConfigsManagerTest.kt @@ -19,7 +19,7 @@ import org.junit.Test import org.junit.runner.RunWith import org.junit.runners.Parameterized -private val configManager = MockConfigManager() +private val configManager = MockEnvironmentConfigStorage() private val appVersionProvider = mockk() private val expressAuthProvider = mockk() private val stakeKitAuthProvider = mockk() @@ -106,9 +106,9 @@ internal class ProdApiConfigsManagerTest(private val model: Model) { headers = mapOf( "api-key" to Provider { if (environment == ApiEnvironment.PROD) { - MockConfigManager.EXPRESS_API_KEY + MockEnvironmentConfigStorage.EXPRESS_API_KEY } else { - MockConfigManager.EXPRESS_DEV_API_KEY + MockEnvironmentConfigStorage.EXPRESS_DEV_API_KEY } }, "user-id" to Provider { EXPRESS_USER_ID }, diff --git a/libs/blockchain-sdk/src/main/java/com/tangem/blockchainsdk/DefaultBlockchainSDKFactory.kt b/libs/blockchain-sdk/src/main/java/com/tangem/blockchainsdk/DefaultBlockchainSDKFactory.kt index 863a11adb9..6aaf1a4145 100644 --- a/libs/blockchain-sdk/src/main/java/com/tangem/blockchainsdk/DefaultBlockchainSDKFactory.kt +++ b/libs/blockchain-sdk/src/main/java/com/tangem/blockchainsdk/DefaultBlockchainSDKFactory.kt @@ -6,8 +6,8 @@ import com.tangem.blockchain.common.network.providers.ProviderType import com.tangem.blockchainsdk.converters.BlockchainProviderTypesConverter import com.tangem.blockchainsdk.loader.BlockchainProvidersResponseLoader import com.tangem.blockchainsdk.store.RuntimeStore -import com.tangem.datasource.config.ConfigManager -import com.tangem.datasource.config.models.ProviderModel +import com.tangem.datasource.local.config.environment.EnvironmentConfigStorage +import com.tangem.datasource.local.config.environment.models.ProviderModel import com.tangem.utils.coroutines.CoroutineDispatcherProvider import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.coroutineScope @@ -22,7 +22,7 @@ internal typealias BlockchainProviderTypes = Map> * Implementation of Blockchain SDK components factory * * @property blockchainProvidersResponseLoader blockchain providers response loader - * @property configManager config manager + * @property environmentConfigStorage environment config storage * @property blockchainProviderTypesStore blockchain provider types store * @property walletManagerFactoryCreator wallet manager factory creator * @@ -30,7 +30,7 @@ internal typealias BlockchainProviderTypes = Map> */ internal class DefaultBlockchainSDKFactory( private val blockchainProvidersResponseLoader: BlockchainProvidersResponseLoader, - private val configManager: ConfigManager, + private val environmentConfigStorage: EnvironmentConfigStorage, private val blockchainProviderTypesStore: RuntimeStore, private val walletManagerFactoryCreator: WalletManagerFactoryCreator, dispatchers: CoroutineDispatcherProvider, @@ -54,7 +54,7 @@ internal class DefaultBlockchainSDKFactory( private fun createWalletManagerFactory(): Flow { return combine( - flow = configManager.getConfig().map { it.blockchainSdkConfig }, + flow = environmentConfigStorage.getConfig().map { it.blockchainSdkConfig }, flow2 = blockchainProviderTypesStore.get(), // flow3 = subscribe on feature toggles changes, TODO: [REDACTED_JIRA] transform = walletManagerFactoryCreator::create, diff --git a/libs/blockchain-sdk/src/main/java/com/tangem/blockchainsdk/converters/BlockchainProviderTypesConverter.kt b/libs/blockchain-sdk/src/main/java/com/tangem/blockchainsdk/converters/BlockchainProviderTypesConverter.kt index f348d06b21..cd0479d55c 100644 --- a/libs/blockchain-sdk/src/main/java/com/tangem/blockchainsdk/converters/BlockchainProviderTypesConverter.kt +++ b/libs/blockchain-sdk/src/main/java/com/tangem/blockchainsdk/converters/BlockchainProviderTypesConverter.kt @@ -6,7 +6,7 @@ import com.tangem.blockchainsdk.BlockchainProviderTypes import com.tangem.blockchainsdk.BlockchainProvidersResponse import com.tangem.blockchainsdk.utils.createPrivateProviderType import com.tangem.blockchainsdk.utils.fromNetworkId -import com.tangem.datasource.config.models.ProviderModel +import com.tangem.datasource.local.config.environment.models.ProviderModel import com.tangem.utils.converter.Converter import timber.log.Timber diff --git a/libs/blockchain-sdk/src/main/java/com/tangem/blockchainsdk/di/BlockchainSDKFactoryModule.kt b/libs/blockchain-sdk/src/main/java/com/tangem/blockchainsdk/di/BlockchainSDKFactoryModule.kt index 1d960ebe4e..6ef9eb792b 100644 --- a/libs/blockchain-sdk/src/main/java/com/tangem/blockchainsdk/di/BlockchainSDKFactoryModule.kt +++ b/libs/blockchain-sdk/src/main/java/com/tangem/blockchainsdk/di/BlockchainSDKFactoryModule.kt @@ -12,7 +12,7 @@ import com.tangem.blockchainsdk.store.DefaultRuntimeStore import com.tangem.core.featuretoggle.manager.FeatureTogglesManager import com.tangem.datasource.api.common.AuthProvider import com.tangem.datasource.api.tangemTech.TangemTechApi -import com.tangem.datasource.config.ConfigManager +import com.tangem.datasource.local.config.environment.EnvironmentConfigStorage import com.tangem.datasource.local.preferences.AppPreferencesStore import com.tangem.utils.coroutines.CoroutineDispatcherProvider import dagger.Module @@ -29,13 +29,13 @@ internal object BlockchainSDKFactoryModule { @Singleton fun provideBlockchainSDKFactory( blockchainProvidersResponseLoader: BlockchainProvidersResponseLoader, - configManager: ConfigManager, + environmentConfigStorage: EnvironmentConfigStorage, walletManagerFactoryCreator: WalletManagerFactoryCreator, dispatchers: CoroutineDispatcherProvider, ): BlockchainSDKFactory { return DefaultBlockchainSDKFactory( blockchainProvidersResponseLoader = blockchainProvidersResponseLoader, - configManager = configManager, + environmentConfigStorage = environmentConfigStorage, blockchainProviderTypesStore = DefaultRuntimeStore(defaultValue = emptyMap()), walletManagerFactoryCreator = walletManagerFactoryCreator, dispatchers = dispatchers, diff --git a/libs/blockchain-sdk/src/main/java/com/tangem/blockchainsdk/loader/BlockchainProvidersResponseLoader.kt b/libs/blockchain-sdk/src/main/java/com/tangem/blockchainsdk/loader/BlockchainProvidersResponseLoader.kt index d0e43508c0..37cd6e9c3a 100644 --- a/libs/blockchain-sdk/src/main/java/com/tangem/blockchainsdk/loader/BlockchainProvidersResponseLoader.kt +++ b/libs/blockchain-sdk/src/main/java/com/tangem/blockchainsdk/loader/BlockchainProvidersResponseLoader.kt @@ -6,7 +6,7 @@ import com.tangem.blockchainsdk.BlockchainProvidersResponse import com.tangem.blockchainsdk.utils.createPrivateProviderType import com.tangem.datasource.api.tangemTech.TangemTechApi import com.tangem.datasource.asset.loader.AssetLoader -import com.tangem.datasource.config.models.ProviderModel +import com.tangem.datasource.local.config.environment.models.ProviderModel import com.tangem.utils.coroutines.CoroutineDispatcherProvider import com.tangem.utils.coroutines.runCatching import timber.log.Timber diff --git a/libs/blockchain-sdk/src/test/java/com/tangem/blockchainsdk/loader/BlockchainProvidersResponseLoaderTest.kt b/libs/blockchain-sdk/src/test/java/com/tangem/blockchainsdk/loader/BlockchainProvidersResponseLoaderTest.kt index 142425d558..7bb53caa80 100644 --- a/libs/blockchain-sdk/src/test/java/com/tangem/blockchainsdk/loader/BlockchainProvidersResponseLoaderTest.kt +++ b/libs/blockchain-sdk/src/test/java/com/tangem/blockchainsdk/loader/BlockchainProvidersResponseLoaderTest.kt @@ -10,7 +10,7 @@ import com.tangem.blockchainsdk.BlockchainProvidersResponse import com.tangem.datasource.api.tangemTech.TangemTechApi import com.tangem.datasource.asset.loader.AssetLoader import com.tangem.datasource.asset.reader.AssetReader -import com.tangem.datasource.config.models.ProviderModel +import com.tangem.datasource.local.config.environment.models.ProviderModel import com.tangem.utils.coroutines.TestingCoroutineDispatcherProvider import io.mockk.* import kotlinx.coroutines.test.runTest