diff --git a/app/src/main/java/com/tangem/tap/TapApplication.kt b/app/src/main/java/com/tangem/tap/TapApplication.kt index 051cb803b8..de7e20d595 100644 --- a/app/src/main/java/com/tangem/tap/TapApplication.kt +++ b/app/src/main/java/com/tangem/tap/TapApplication.kt @@ -10,8 +10,10 @@ import com.orhanobut.logger.AndroidLogAdapter import com.orhanobut.logger.Logger import com.tangem.Log import com.tangem.LogFormat +import com.tangem.TangemSdkLogger import com.tangem.blockchain.common.AccountCreator import com.tangem.blockchain.common.datastorage.BlockchainDataStorage +import com.tangem.blockchain.common.logging.BlockchainSDKLogger import com.tangem.blockchain.network.BlockchainSdkRetrofitBuilder import com.tangem.core.analytics.Analytics import com.tangem.core.analytics.filter.OneTimeEventFilter @@ -178,6 +180,12 @@ internal class TapApplication : Application(), ImageLoaderFactory { @Inject lateinit var feedbackManagerFeatureToggles: FeedbackManagerFeatureToggles + + @Inject + lateinit var blockchainSDKLogger: BlockchainSDKLogger + + @Inject + lateinit var tangemSdkLogger: TangemSdkLogger // endregion Injected override fun onCreate() { @@ -266,6 +274,8 @@ internal class TapApplication : Application(), ImageLoaderFactory { saveTwinsOnboardingShownUseCase = saveTwinsOnboardingShownUseCase, cardRepository = cardRepository, feedbackManagerFeatureToggles = feedbackManagerFeatureToggles, + tangemSdkLogger = tangemSdkLogger, + blockchainSDKLogger = blockchainSDKLogger, ), ), ) @@ -343,13 +353,17 @@ internal class TapApplication : Application(), ImageLoaderFactory { Log.Level.View, Log.Level.Network, Log.Level.Error, + Log.Level.Biometric, ) return TangemLogCollector(logLevels, LogFormat.StairsFormatter()) } val additionalFeedbackInfo = initAdditionalFeedbackInfo(context) val tangemLogCollector = initTangemLogCollector() - Log.addLogger(tangemLogCollector) + + Log.addLogger( + logger = if (feedbackManagerFeatureToggles.isLocalLogsEnabled) tangemSdkLogger else tangemLogCollector, + ) val feedbackManager = FeedbackManager( infoHolder = additionalFeedbackInfo, diff --git a/app/src/main/java/com/tangem/tap/di/domain/WalletManagersFacadeModule.kt b/app/src/main/java/com/tangem/tap/di/domain/WalletManagersFacadeModule.kt index 3fedeef4ca..319ddd2c0e 100644 --- a/app/src/main/java/com/tangem/tap/di/domain/WalletManagersFacadeModule.kt +++ b/app/src/main/java/com/tangem/tap/di/domain/WalletManagersFacadeModule.kt @@ -3,11 +3,13 @@ package com.tangem.tap.di.domain import com.squareup.moshi.Moshi import com.tangem.blockchain.common.AccountCreator import com.tangem.blockchain.common.datastorage.BlockchainDataStorage +import com.tangem.blockchain.common.logging.BlockchainSDKLogger import com.tangem.datasource.asset.AssetReader import com.tangem.datasource.config.ConfigManager import com.tangem.datasource.di.SdkMoshi import com.tangem.datasource.local.userwallet.UserWalletsStore import com.tangem.datasource.local.walletmanager.WalletManagersStore +import com.tangem.domain.feedback.FeedbackManagerFeatureToggles import com.tangem.domain.walletmanager.DefaultWalletManagersFacade import com.tangem.domain.walletmanager.WalletManagersFacade import com.tangem.feature.onboarding.data.MnemonicRepository @@ -32,6 +34,8 @@ internal object WalletManagersFacadeModule { mnemonicRepository: MnemonicRepository, assetReader: AssetReader, @SdkMoshi moshi: Moshi, + blockchainSDKLogger: BlockchainSDKLogger, + feedbackManagerFeatureToggles: FeedbackManagerFeatureToggles, ): WalletManagersFacade { return DefaultWalletManagersFacade( walletManagersStore = walletManagersStore, @@ -42,6 +46,8 @@ internal object WalletManagersFacadeModule { moshi = moshi, mnemonic = mnemonicRepository.generateDefaultMnemonic(), accountCreator = accountCreator, + blockchainSDKLogger = blockchainSDKLogger, + feedbackManagerFeatureToggles = feedbackManagerFeatureToggles, ) } } \ 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 03f3022a51..f8a93381e8 100644 --- a/app/src/main/java/com/tangem/tap/domain/TapWalletManager.kt +++ b/app/src/main/java/com/tangem/tap/domain/TapWalletManager.kt @@ -47,6 +47,11 @@ class TapWalletManager( config = blockchainSdkConfig, accountCreator = store.inject(DaggerGraphState::accountCreator), blockchainDataStorage = store.inject(DaggerGraphState::blockchainDataStorage), + loggers = if (store.inject(DaggerGraphState::feedbackManagerFeatureToggles).isLocalLogsEnabled) { + listOf(store.inject(DaggerGraphState::blockchainSDKLogger)) + } else { + emptyList() + }, ) } diff --git a/app/src/main/java/com/tangem/tap/proxy/redux/DaggerGraphState.kt b/app/src/main/java/com/tangem/tap/proxy/redux/DaggerGraphState.kt index 0afb10ab8d..c23def20bc 100644 --- a/app/src/main/java/com/tangem/tap/proxy/redux/DaggerGraphState.kt +++ b/app/src/main/java/com/tangem/tap/proxy/redux/DaggerGraphState.kt @@ -1,7 +1,9 @@ package com.tangem.tap.proxy.redux +import com.tangem.TangemSdkLogger import com.tangem.blockchain.common.AccountCreator import com.tangem.blockchain.common.datastorage.BlockchainDataStorage +import com.tangem.blockchain.common.logging.BlockchainSDKLogger import com.tangem.datasource.connection.NetworkConnectionManager import com.tangem.domain.appcurrency.repository.AppCurrencyRepository import com.tangem.domain.apptheme.repository.AppThemeModeRepository @@ -67,4 +69,6 @@ data class DaggerGraphState( val saveTwinsOnboardingShownUseCase: SaveTwinsOnboardingShownUseCase? = null, val cardRepository: CardRepository? = null, val feedbackManagerFeatureToggles: FeedbackManagerFeatureToggles? = null, + val tangemSdkLogger: TangemSdkLogger? = null, + val blockchainSDKLogger: BlockchainSDKLogger? = null, ) : StateType \ No newline at end of file diff --git a/domain/legacy/src/main/java/com/tangem/domain/walletmanager/DefaultWalletManagersFacade.kt b/domain/legacy/src/main/java/com/tangem/domain/walletmanager/DefaultWalletManagersFacade.kt index bb0cc5a3ad..15b93ba08e 100644 --- a/domain/legacy/src/main/java/com/tangem/domain/walletmanager/DefaultWalletManagersFacade.kt +++ b/domain/legacy/src/main/java/com/tangem/domain/walletmanager/DefaultWalletManagersFacade.kt @@ -11,6 +11,7 @@ import com.tangem.blockchain.common.address.Address import com.tangem.blockchain.common.address.AddressType import com.tangem.blockchain.common.address.EstimationFeeAddressFactory import com.tangem.blockchain.common.datastorage.BlockchainDataStorage +import com.tangem.blockchain.common.logging.BlockchainSDKLogger import com.tangem.blockchain.common.pagination.Page import com.tangem.blockchain.common.transaction.Fee import com.tangem.blockchain.common.transaction.TransactionFee @@ -25,6 +26,7 @@ import com.tangem.datasource.local.userwallet.UserWalletsStore import com.tangem.datasource.local.walletmanager.WalletManagersStore import com.tangem.domain.common.util.hasDerivation import com.tangem.domain.demo.DemoConfig +import com.tangem.domain.feedback.FeedbackManagerFeatureToggles import com.tangem.domain.tokens.model.CryptoCurrency import com.tangem.domain.tokens.model.Network import com.tangem.domain.tokens.model.warnings.CryptoCurrencyWarning @@ -53,15 +55,18 @@ class DefaultWalletManagersFacade( configManager: ConfigManager, blockchainDataStorage: BlockchainDataStorage, accountCreator: AccountCreator, + blockchainSDKLogger: BlockchainSDKLogger, + feedbackManagerFeatureToggles: FeedbackManagerFeatureToggles, ) : WalletManagersFacade { private val demoConfig by lazy { DemoConfig() } private val resultFactory by lazy { UpdateWalletManagerResultFactory() } private val walletManagerFactory by lazy { WalletManagerFactory( - configManager, - accountCreator, - blockchainDataStorage, + configManager = configManager, + accountCreator = accountCreator, + blockchainDataStorage = blockchainDataStorage, + blockchainSDKLogger = if (feedbackManagerFeatureToggles.isLocalLogsEnabled) blockchainSDKLogger else null, ) } private val sdkTokenConverter by lazy { SdkTokenConverter() } diff --git a/domain/legacy/src/main/java/com/tangem/domain/walletmanager/utils/WalletManagerFactory.kt b/domain/legacy/src/main/java/com/tangem/domain/walletmanager/utils/WalletManagerFactory.kt index e0377cf6a3..89a63b05f6 100644 --- a/domain/legacy/src/main/java/com/tangem/domain/walletmanager/utils/WalletManagerFactory.kt +++ b/domain/legacy/src/main/java/com/tangem/domain/walletmanager/utils/WalletManagerFactory.kt @@ -5,6 +5,7 @@ import com.tangem.blockchain.common.Blockchain import com.tangem.blockchain.common.DerivationParams import com.tangem.blockchain.common.WalletManager import com.tangem.blockchain.common.datastorage.BlockchainDataStorage +import com.tangem.blockchain.common.logging.BlockchainSDKLogger import com.tangem.crypto.hdWallet.DerivationPath import com.tangem.datasource.config.ConfigManager import com.tangem.domain.common.DerivationStyleProvider @@ -18,10 +19,16 @@ internal class WalletManagerFactory( configManager: ConfigManager, accountCreator: AccountCreator, blockchainDataStorage: BlockchainDataStorage, + blockchainSDKLogger: BlockchainSDKLogger? = null, ) { private val sdkWalletManagerFactory by lazy { - BlockchainWalletManagerFactory(configManager.config.blockchainSdkConfig, accountCreator, blockchainDataStorage) + BlockchainWalletManagerFactory( + config = configManager.config.blockchainSdkConfig, + accountCreator = accountCreator, + blockchainDataStorage = blockchainDataStorage, + loggers = listOfNotNull(blockchainSDKLogger), + ) } fun createWalletManager(