From 6f8770007e105d96527d9e04fb864ca97138a6c9 Mon Sep 17 00:00:00 2001 From: Tangem Date: Tue, 6 May 2025 20:27:07 +0400 Subject: [PATCH] Updated on 2026-08-14 --- app/src/main/java/com/tangem/tap/TangemApplication.kt | 2 ++ .../java/com/tangem/tap/data/DefaultCardSdkProvider.kt | 6 ++++-- .../com/tangem/datasource/api/common/config/ApiConfig.kt | 4 ++-- .../common/config/{TangemCardSdk.kt => Attestation.kt} | 4 ++-- .../java/com/tangem/datasource/di/ApiConfigsModule.kt | 2 +- .../tangem/datasource/utils/NetworkLogsSaveInterceptor.kt | 2 +- .../common/config/managers/ProdApiConfigsManagerTest.kt | 6 +++--- .../tangem/data/quotes/multi/DefaultMultiQuoteFetcher.kt | 7 ++++++- .../viewmodels/EnvironmentsTogglesViewModel.kt | 8 ++++---- 9 files changed, 25 insertions(+), 16 deletions(-) rename core/datasource/src/main/java/com/tangem/datasource/api/common/config/{TangemCardSdk.kt => Attestation.kt} (87%) diff --git a/app/src/main/java/com/tangem/tap/TangemApplication.kt b/app/src/main/java/com/tangem/tap/TangemApplication.kt index d61bb4e130..ed0018b6d9 100644 --- a/app/src/main/java/com/tangem/tap/TangemApplication.kt +++ b/app/src/main/java/com/tangem/tap/TangemApplication.kt @@ -37,6 +37,7 @@ import com.tangem.datasource.local.config.environment.EnvironmentConfigStorage import com.tangem.datasource.local.config.issuers.IssuersConfigStorage import com.tangem.datasource.local.logs.AppLogsStore import com.tangem.datasource.local.preferences.AppPreferencesStore +import com.tangem.datasource.utils.NetworkLogsSaveInterceptor import com.tangem.domain.appcurrency.repository.AppCurrencyRepository import com.tangem.domain.apptheme.GetAppThemeModeUseCase import com.tangem.domain.apptheme.repository.AppThemeModeRepository @@ -311,6 +312,7 @@ abstract class TangemApplication : Application(), ImageLoaderFactory, Configurat TangemApiServiceLogging.addInterceptors( createNetworkLoggingInterceptor(), ChuckerInterceptor(this), + NetworkLogsSaveInterceptor(appLogsStore), ) } diff --git a/app/src/main/java/com/tangem/tap/data/DefaultCardSdkProvider.kt b/app/src/main/java/com/tangem/tap/data/DefaultCardSdkProvider.kt index b95fdcbadf..b162d5f389 100644 --- a/app/src/main/java/com/tangem/tap/data/DefaultCardSdkProvider.kt +++ b/app/src/main/java/com/tangem/tap/data/DefaultCardSdkProvider.kt @@ -32,6 +32,7 @@ import com.tangem.utils.coroutines.CoroutineDispatcherProvider import com.tangem.wallet.BuildConfig import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.SupervisorJob +import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.onEach @@ -64,7 +65,7 @@ internal class DefaultCardSdkProvider @Inject constructor( if (BuildConfig.TESTER_MENU_ENABLED) { appPreferencesStore.getObjectMap(PreferencesKeys.apiConfigsEnvironmentKey) .map { - when (it[ApiConfig.ID.TangemCardSdk.name]) { + when (it[ApiConfig.ID.Attestation.name]) { ApiEnvironment.DEV, ApiEnvironment.STAGE, -> false @@ -73,6 +74,7 @@ internal class DefaultCardSdkProvider @Inject constructor( -> true } } + .distinctUntilChanged() .onEach { isProd -> holder?.let { it.sdk.config.isTangemAttestationProdEnv = isProd @@ -170,7 +172,7 @@ internal class DefaultCardSdkProvider @Inject constructor( config = config.apply { isNewOnlineAttestationEnabled = cardSdkFeatureToggles.isNewAttestationEnabled - val apiConfig = apiConfigsManager.getEnvironmentConfig(id = ApiConfig.ID.TangemCardSdk) + val apiConfig = apiConfigsManager.getEnvironmentConfig(id = ApiConfig.ID.Attestation) isTangemAttestationProdEnv = apiConfig.environment == ApiEnvironment.PROD }, ) diff --git a/core/datasource/src/main/java/com/tangem/datasource/api/common/config/ApiConfig.kt b/core/datasource/src/main/java/com/tangem/datasource/api/common/config/ApiConfig.kt index b6bc222e76..f3cc288b25 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/api/common/config/ApiConfig.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/api/common/config/ApiConfig.kt @@ -25,7 +25,7 @@ sealed class ApiConfig { TangemTech, StakeKit, TangemVisa, - TangemCardSdk, + Attestation, BlockAid, } @@ -35,7 +35,7 @@ sealed class ApiConfig { is TangemTech -> ID.TangemTech is StakeKit -> ID.StakeKit is TangemVisa -> ID.TangemVisa - is TangemCardSdk -> ID.TangemCardSdk + is Attestation -> ID.Attestation is BlockAid -> ID.BlockAid } } diff --git a/core/datasource/src/main/java/com/tangem/datasource/api/common/config/TangemCardSdk.kt b/core/datasource/src/main/java/com/tangem/datasource/api/common/config/Attestation.kt similarity index 87% rename from core/datasource/src/main/java/com/tangem/datasource/api/common/config/TangemCardSdk.kt rename to core/datasource/src/main/java/com/tangem/datasource/api/common/config/Attestation.kt index 49edb4a7d8..f3d0af5272 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/api/common/config/TangemCardSdk.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/api/common/config/Attestation.kt @@ -1,11 +1,11 @@ package com.tangem.datasource.api.common.config /** - * Tangem API [ApiConfig] that used in CardSDK + * Attestation [ApiConfig] that used in CardSDK * [REDACTED_AUTHOR] */ -internal class TangemCardSdk : ApiConfig() { +internal class Attestation : ApiConfig() { override val defaultEnvironment: ApiEnvironment = ApiEnvironment.PROD 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 62107738e3..174cf88a63 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 @@ -49,5 +49,5 @@ internal object ApiConfigsModule { @Provides @IntoSet - fun provideTangemCardSdkConfig(): ApiConfig = TangemCardSdk() + fun provideAttestationConfig(): ApiConfig = Attestation() } \ No newline at end of file diff --git a/core/datasource/src/main/java/com/tangem/datasource/utils/NetworkLogsSaveInterceptor.kt b/core/datasource/src/main/java/com/tangem/datasource/utils/NetworkLogsSaveInterceptor.kt index 26703087a9..958c875e21 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/utils/NetworkLogsSaveInterceptor.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/utils/NetworkLogsSaveInterceptor.kt @@ -25,7 +25,7 @@ private const val JSON_INDENT_SPACES = 4 * [REDACTED_AUTHOR] */ -internal class NetworkLogsSaveInterceptor( +class NetworkLogsSaveInterceptor( private val appLogsStore: AppLogsStore, ) : Interceptor { 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 116ddea237..3167db2d61 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 @@ -86,7 +86,7 @@ internal class ProdApiConfigsManagerTest(private val model: Model) { is TangemTech -> createTangemTechModel() is StakeKit -> createStakeKitModel() is TangemVisa -> createVisaModel() - is TangemCardSdk -> createTangemCardSdkModel() + is Attestation -> createAttestationModel() is BlockAid -> createBlockAidSdkModel() } } @@ -189,9 +189,9 @@ internal class ProdApiConfigsManagerTest(private val model: Model) { ) } - private fun createTangemCardSdkModel(): Model { + private fun createAttestationModel(): Model { return Model( - id = ApiConfig.ID.TangemCardSdk, + id = ApiConfig.ID.Attestation, expected = ApiEnvironmentConfig( environment = ApiEnvironment.PROD, baseUrl = "https://api.tangem-tech.com/", diff --git a/data/quotes/src/main/java/com/tangem/data/quotes/multi/DefaultMultiQuoteFetcher.kt b/data/quotes/src/main/java/com/tangem/data/quotes/multi/DefaultMultiQuoteFetcher.kt index e9fa631d23..53377c3a3e 100644 --- a/data/quotes/src/main/java/com/tangem/data/quotes/multi/DefaultMultiQuoteFetcher.kt +++ b/data/quotes/src/main/java/com/tangem/data/quotes/multi/DefaultMultiQuoteFetcher.kt @@ -10,6 +10,7 @@ import com.tangem.domain.core.utils.catchOn import com.tangem.domain.quotes.multi.MultiQuoteFetcher import com.tangem.domain.tokens.model.CryptoCurrency import com.tangem.utils.coroutines.CoroutineDispatcherProvider +import kotlinx.coroutines.withContext import timber.log.Timber import javax.inject.Inject import javax.inject.Singleton @@ -53,7 +54,11 @@ internal class DefaultMultiQuoteFetcher @Inject constructor( val coinIds = replacementIdsResult.idsForRequest.joinToString(separator = ",") val response = safeApiCallWithTimeout( - call = { tangemTechApi.getQuotes(currencyId = appCurrencyId, coinIds = coinIds).bind() }, + call = { + withContext(dispatchers.io) { + tangemTechApi.getQuotes(currencyId = appCurrencyId, coinIds = coinIds).bind() + } + }, onError = { error -> throw error }, ) diff --git a/features/tester/impl/src/main/java/com/tangem/feature/tester/presentation/environments/viewmodels/EnvironmentsTogglesViewModel.kt b/features/tester/impl/src/main/java/com/tangem/feature/tester/presentation/environments/viewmodels/EnvironmentsTogglesViewModel.kt index 3777d8a26a..0da6b14112 100644 --- a/features/tester/impl/src/main/java/com/tangem/feature/tester/presentation/environments/viewmodels/EnvironmentsTogglesViewModel.kt +++ b/features/tester/impl/src/main/java/com/tangem/feature/tester/presentation/environments/viewmodels/EnvironmentsTogglesViewModel.kt @@ -96,15 +96,15 @@ internal class EnvironmentsTogglesViewModel @Inject constructor( viewModelScope.launch { val environment = ApiEnvironment.valueOf(name) - handleIfTangemCardSdkConfig(id = id, environment = environment) + handleIfAttestationConfig(id = id, environment = environment) mutableApiConfigsManager.changeEnvironment(id = id, environment = environment) } } - /** Special logic for [ApiConfig.ID.TangemCardSdk] */ - private fun handleIfTangemCardSdkConfig(id: String, environment: ApiEnvironment) { - if (id == ApiConfig.ID.TangemCardSdk.name) { + /** Special logic for [ApiConfig.ID.Attestation] */ + private fun handleIfAttestationConfig(id: String, environment: ApiEnvironment) { + if (id == ApiConfig.ID.Attestation.name) { cardSdkConfigRepository.setTangemApiProdEnvFlag( flag = when (environment) { ApiEnvironment.PROD -> true