From 1441986cabca08791313dc41474b8252d7a1ef67 Mon Sep 17 00:00:00 2001 From: Tangem Date: Wed, 7 Feb 2024 10:25:35 +0300 Subject: [PATCH] Updated on 2026-08-14 --- .../java/com/tangem/tap/TapApplication.kt | 6 ++-- .../di/domain/WalletManagersFacadeModule.kt | 9 ++++-- .../com/tangem/tap/domain/TapWalletManager.kt | 10 ++++++- .../tap/proxy/redux/DaggerGraphState.kt | 4 +-- .../di/BlockchainDataStorageModule.kt | 21 ++++++++++++++ .../BlockchainWalletManagerFactoryModule.kt | 28 ------------------- .../DefaultWalletManagersFacade.kt | 10 ++++--- .../utils/WalletManagerFactory.kt | 10 +++++-- 8 files changed, 54 insertions(+), 44 deletions(-) create mode 100644 core/datasource/src/main/java/com/tangem/datasource/di/BlockchainDataStorageModule.kt delete mode 100644 core/datasource/src/main/java/com/tangem/datasource/di/BlockchainWalletManagerFactoryModule.kt diff --git a/app/src/main/java/com/tangem/tap/TapApplication.kt b/app/src/main/java/com/tangem/tap/TapApplication.kt index 7e200d31b9..955106f3dc 100644 --- a/app/src/main/java/com/tangem/tap/TapApplication.kt +++ b/app/src/main/java/com/tangem/tap/TapApplication.kt @@ -10,7 +10,7 @@ import com.orhanobut.logger.AndroidLogAdapter import com.orhanobut.logger.Logger import com.tangem.Log import com.tangem.LogFormat -import com.tangem.blockchain.common.WalletManagerFactory +import com.tangem.blockchain.common.datastorage.BlockchainDataStorage import com.tangem.blockchain.network.BlockchainSdkRetrofitBuilder import com.tangem.core.analytics.Analytics import com.tangem.core.analytics.filter.OneTimeEventFilter @@ -162,7 +162,7 @@ internal class TapApplication : Application(), ImageLoaderFactory { lateinit var testerFeatureToggles: TesterFeatureToggles @Inject - lateinit var blockchainWalletManagerFactory: WalletManagerFactory + lateinit var blockchainDataStorage: BlockchainDataStorage // endregion Injected override fun onCreate() { @@ -240,7 +240,7 @@ internal class TapApplication : Application(), ImageLoaderFactory { sendFeatureToggles = sendFeatureToggles, derivationsRepository = derivationsRepository, testerFeatureToggles = testerFeatureToggles, - blockchainWalletManagerFactory = blockchainWalletManagerFactory, + blockchainDataStorage = blockchainDataStorage, ), ), ) 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 65a6dce65c..a78ad179cd 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 @@ -1,8 +1,9 @@ package com.tangem.tap.di.domain import com.squareup.moshi.Moshi -import com.tangem.blockchain.common.WalletManagerFactory +import com.tangem.blockchain.common.datastorage.BlockchainDataStorage 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 @@ -24,7 +25,8 @@ internal object WalletManagersFacadeModule { fun provideWalletManagersFacade( walletManagersStore: WalletManagersStore, userWalletsStore: UserWalletsStore, - blockchainWalletManagerFactory: WalletManagerFactory, + configManager: ConfigManager, + blockchainDataStorage: BlockchainDataStorage, mnemonicRepository: MnemonicRepository, assetReader: AssetReader, @SdkMoshi moshi: Moshi, @@ -32,7 +34,8 @@ internal object WalletManagersFacadeModule { return DefaultWalletManagersFacade( walletManagersStore = walletManagersStore, userWalletsStore = userWalletsStore, - blockchainWalletManagerFactory = blockchainWalletManagerFactory, + configManager = configManager, + blockchainDataStorage = blockchainDataStorage, assetReader = assetReader, moshi = moshi, mnemonic = mnemonicRepository.generateDefaultMnemonic(), 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 4379b387ab..41af6ffed9 100644 --- a/app/src/main/java/com/tangem/tap/domain/TapWalletManager.kt +++ b/app/src/main/java/com/tangem/tap/domain/TapWalletManager.kt @@ -1,5 +1,6 @@ package com.tangem.tap.domain +import com.tangem.blockchain.common.BlockchainSdkConfig import com.tangem.blockchain.common.Token import com.tangem.blockchain.common.Wallet import com.tangem.blockchain.common.WalletManagerFactory @@ -30,6 +31,10 @@ class TapWalletManager( private val dispatchers: CoroutineDispatcherProvider = AppCoroutineDispatcherProvider(), ) { + private val blockchainSdkConfig by lazy { + store.state.globalState.configManager?.config?.blockchainSdkConfig ?: BlockchainSdkConfig() + } + private var loadUserWalletDataJob: Job? = null set(value) { field?.cancel() @@ -37,7 +42,10 @@ class TapWalletManager( } val walletManagerFactory: WalletManagerFactory by lazy { - store.state.daggerGraphState.get(DaggerGraphState::blockchainWalletManagerFactory) + WalletManagerFactory( + config = blockchainSdkConfig, + blockchainDataStorage = store.state.daggerGraphState.get(DaggerGraphState::blockchainDataStorage), + ) } suspend fun onWalletSelected(userWallet: UserWallet, sendAnalyticsEvent: Boolean) { 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 19875bc1be..d10051fa08 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,6 +1,6 @@ package com.tangem.tap.proxy.redux -import com.tangem.blockchain.common.WalletManagerFactory +import com.tangem.blockchain.common.datastorage.BlockchainDataStorage import com.tangem.datasource.connection.NetworkConnectionManager import com.tangem.domain.appcurrency.repository.AppCurrencyRepository import com.tangem.domain.apptheme.repository.AppThemeModeRepository @@ -58,7 +58,7 @@ data class DaggerGraphState( val currenciesRepository: CurrenciesRepository? = null, val derivationsRepository: DerivationsRepository? = null, val testerFeatureToggles: TesterFeatureToggles? = null, - val blockchainWalletManagerFactory: WalletManagerFactory? = null, + val blockchainDataStorage: BlockchainDataStorage? = null, ) : StateType { inline fun get(getDependency: DaggerGraphState.() -> T?): T { diff --git a/core/datasource/src/main/java/com/tangem/datasource/di/BlockchainDataStorageModule.kt b/core/datasource/src/main/java/com/tangem/datasource/di/BlockchainDataStorageModule.kt new file mode 100644 index 0000000000..3d285b3fbe --- /dev/null +++ b/core/datasource/src/main/java/com/tangem/datasource/di/BlockchainDataStorageModule.kt @@ -0,0 +1,21 @@ +package com.tangem.datasource.di + +import com.tangem.blockchain.common.datastorage.BlockchainDataStorage +import com.tangem.datasource.local.blockchain.DefaultBlockchainDataStorage +import com.tangem.datasource.local.preferences.AppPreferencesStore +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 BlockchainDataStorageModule { + + @Provides + @Singleton + fun provideBlockchainDataStorage(appPreferencesStore: AppPreferencesStore): BlockchainDataStorage { + return DefaultBlockchainDataStorage(appPreferencesStore) + } +} \ No newline at end of file diff --git a/core/datasource/src/main/java/com/tangem/datasource/di/BlockchainWalletManagerFactoryModule.kt b/core/datasource/src/main/java/com/tangem/datasource/di/BlockchainWalletManagerFactoryModule.kt deleted file mode 100644 index aeec8933f9..0000000000 --- a/core/datasource/src/main/java/com/tangem/datasource/di/BlockchainWalletManagerFactoryModule.kt +++ /dev/null @@ -1,28 +0,0 @@ -package com.tangem.datasource.di - -import com.tangem.blockchain.common.WalletManagerFactory -import com.tangem.datasource.config.ConfigManager -import com.tangem.datasource.local.blockchain.DefaultBlockchainDataStorage -import com.tangem.datasource.local.preferences.AppPreferencesStore -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 BlockchainWalletManagerFactoryModule { - - @Provides - @Singleton - fun provideBlockchainWalletManagerFactory( - configManager: ConfigManager, - appPreferencesStore: AppPreferencesStore, - ): WalletManagerFactory { - return WalletManagerFactory( - config = configManager.config.blockchainSdkConfig, - blockchainDataStorage = DefaultBlockchainDataStorage(appPreferencesStore), - ) - } -} \ 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 004b40c10b..a040c7db7d 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 @@ -10,6 +10,7 @@ import com.tangem.blockchain.common.* 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.transaction.Fee import com.tangem.blockchain.common.transaction.TransactionFee import com.tangem.blockchain.common.txhistory.TransactionHistoryRequest @@ -18,6 +19,7 @@ import com.tangem.blockchain.extensions.SimpleResult import com.tangem.crypto.bip39.Mnemonic import com.tangem.crypto.hdWallet.DerivationPath import com.tangem.datasource.asset.AssetReader +import com.tangem.datasource.config.ConfigManager import com.tangem.datasource.local.userwallet.UserWalletsStore import com.tangem.datasource.local.walletmanager.WalletManagersStore import com.tangem.domain.common.util.hasDerivation @@ -37,23 +39,23 @@ import kotlinx.coroutines.flow.Flow import timber.log.Timber import java.math.BigDecimal import java.util.EnumSet -import com.tangem.blockchain.common.WalletManagerFactory as BlockchainWalletManagerFactory -@Suppress("LargeClass", "TooManyFunctions") +@Suppress("LargeClass", "TooManyFunctions", "LongParameterList") // FIXME: Move to its own module and make internal @Deprecated("Inject the WalletManagerFacade interface using DI instead") class DefaultWalletManagersFacade( private val walletManagersStore: WalletManagersStore, private val userWalletsStore: UserWalletsStore, - blockchainWalletManagerFactory: BlockchainWalletManagerFactory, mnemonic: Mnemonic, assetReader: AssetReader, moshi: Moshi, + configManager: ConfigManager, + blockchainDataStorage: BlockchainDataStorage, ) : WalletManagersFacade { private val demoConfig by lazy { DemoConfig() } private val resultFactory by lazy { UpdateWalletManagerResultFactory() } - private val walletManagerFactory by lazy { WalletManagerFactory(blockchainWalletManagerFactory) } + private val walletManagerFactory by lazy { WalletManagerFactory(configManager, blockchainDataStorage) } private val sdkTokenConverter by lazy { SdkTokenConverter() } private val txHistoryStateConverter by lazy { SdkTransactionHistoryStateConverter() } private val txHistoryItemConverter by lazy { SdkTransactionHistoryItemConverter(assetReader, moshi) } 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 d00e6d64a1..349d189f2e 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 @@ -3,7 +3,9 @@ package com.tangem.domain.walletmanager.utils 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.crypto.hdWallet.DerivationPath +import com.tangem.datasource.config.ConfigManager import com.tangem.domain.common.DerivationStyleProvider import com.tangem.domain.common.extensions.makeWalletManagerForApp import com.tangem.domain.common.util.derivationStyleProvider @@ -11,9 +13,11 @@ import com.tangem.domain.models.scan.ScanResponse import timber.log.Timber import com.tangem.blockchain.common.WalletManagerFactory as BlockchainWalletManagerFactory -internal class WalletManagerFactory( - private val sdkWalletManagerFactory: BlockchainWalletManagerFactory, -) { +internal class WalletManagerFactory(configManager: ConfigManager, blockchainDataStorage: BlockchainDataStorage) { + + private val sdkWalletManagerFactory by lazy { + BlockchainWalletManagerFactory(configManager.config.blockchainSdkConfig, blockchainDataStorage) + } fun createWalletManager( scanResponse: ScanResponse,