From 36d04e3c9e114895a1bcd703650b27a79171dba0 Mon Sep 17 00:00:00 2001 From: Tangem Date: Fri, 22 Apr 2022 16:04:50 +0400 Subject: [PATCH] Updated on 2026-08-14 --- .../com/tangem/tap/domain/TapWalletManager.kt | 8 +- .../tap/features/wallet/redux/WalletAction.kt | 4 +- .../middlewares/MultiWalletMiddleware.kt | 186 +++++++++--------- .../redux/reducers/MultiWalletReducer.kt | 4 +- 4 files changed, 100 insertions(+), 102 deletions(-) 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 e1cd14ba2f..51a4ebac62 100644 --- a/app/src/main/java/com/tangem/tap/domain/TapWalletManager.kt +++ b/app/src/main/java/com/tangem/tap/domain/TapWalletManager.kt @@ -250,10 +250,10 @@ class TapWalletManager { WalletAction.MultiWallet.AddBlockchains(blockchainNetworks, walletManagers), ) } - dispatchOnMain( - WalletAction.MultiWallet.FindBlockchainsInUse, - WalletAction.MultiWallet.FindTokensInUse, - ) +// dispatchOnMain( +// WalletAction.MultiWallet.FindBlockchainsInUse, +// WalletAction.MultiWallet.FindTokensInUse, +// ) } else { val walletManagers = if ( primaryTokens.isNotEmpty() && diff --git a/app/src/main/java/com/tangem/tap/features/wallet/redux/WalletAction.kt b/app/src/main/java/com/tangem/tap/features/wallet/redux/WalletAction.kt index ecb46e6e21..70ec04604e 100644 --- a/app/src/main/java/com/tangem/tap/features/wallet/redux/WalletAction.kt +++ b/app/src/main/java/com/tangem/tap/features/wallet/redux/WalletAction.kt @@ -58,8 +58,8 @@ sealed class WalletAction : Action { data class AddToken(val token: Token, val blockchain: BlockchainNetwork) : MultiWallet() data class SaveCurrencies(val blockchainNetworks: List) : MultiWallet() - object FindTokensInUse : MultiWallet() - object FindBlockchainsInUse : MultiWallet() +// object FindTokensInUse : MultiWallet() +// object FindBlockchainsInUse : MultiWallet() data class TokenLoaded( val amount: Amount, diff --git a/app/src/main/java/com/tangem/tap/features/wallet/redux/middlewares/MultiWalletMiddleware.kt b/app/src/main/java/com/tangem/tap/features/wallet/redux/middlewares/MultiWalletMiddleware.kt index 193f133b26..c6b7b23b62 100644 --- a/app/src/main/java/com/tangem/tap/features/wallet/redux/middlewares/MultiWalletMiddleware.kt +++ b/app/src/main/java/com/tangem/tap/features/wallet/redux/middlewares/MultiWalletMiddleware.kt @@ -1,15 +1,14 @@ package com.tangem.tap.features.wallet.redux.middlewares -import com.tangem.blockchain.common.* -import com.tangem.blockchain.extensions.Result -import com.tangem.common.extensions.isZero +import com.tangem.blockchain.common.AmountType +import com.tangem.blockchain.common.Token +import com.tangem.blockchain.common.WalletManager import com.tangem.tap.common.extensions.safeUpdate import com.tangem.tap.common.redux.global.GlobalState import com.tangem.tap.common.redux.navigation.AppScreen import com.tangem.tap.common.redux.navigation.NavigationAction import com.tangem.tap.currenciesRepository import com.tangem.tap.domain.extensions.makeWalletManagerForApp -import com.tangem.tap.domain.extensions.makeWalletManagersForApp import com.tangem.tap.domain.tokens.BlockchainNetwork import com.tangem.tap.features.demo.DemoHelper import com.tangem.tap.features.demo.isDemoCard @@ -19,7 +18,6 @@ import com.tangem.tap.features.wallet.redux.WalletState import com.tangem.tap.scope import com.tangem.tap.store import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.async import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import java.math.BigDecimal @@ -29,7 +27,7 @@ class MultiWalletMiddleware { action: WalletAction.MultiWallet, walletState: WalletState?, globalState: GlobalState?, ) { val globalState = globalState ?: return - val tapWalletManager = globalState.tapWalletManager +// val tapWalletManager = globalState.tapWalletManager when (action) { is WalletAction.MultiWallet.AddBlockchains -> { @@ -105,94 +103,94 @@ class MultiWalletMiddleware { } } } - is WalletAction.MultiWallet.FindBlockchainsInUse -> { - val scanResponse = globalState.scanResponse ?: return - if (scanResponse.supportsHdWallet()) return - - val cardFirmware = scanResponse.card.firmwareVersion - val blockchains = currenciesRepository.getBlockchains(cardFirmware) - .filterNot { walletState?.blockchains?.contains(it) == true } - .map { BlockchainNetwork(it, null, emptyList()) } - val walletManagers = - tapWalletManager.walletManagerFactory.makeWalletManagersForApp( - scanResponse, - blockchains - ) - - scope.launch { - walletManagers.map { walletManager -> - async(Dispatchers.IO) { - walletManager.safeUpdate() - val wallet = walletManager.wallet - val coinAmount = wallet.amounts[AmountType.Coin]?.value - if (coinAmount != null && !coinAmount.isZero()) { - scope.launch(Dispatchers.Main) { - val blockchainNetwork = BlockchainNetwork.fromWalletManager(walletManager) - if (walletState?.getWalletData(blockchainNetwork) == null) { - store.dispatch(WalletAction.MultiWallet.AddBlockchain( - blockchainNetwork, walletManager - )) - store.dispatch(WalletAction.LoadWallet.Success( - wallet = wallet, - blockchain = blockchainNetwork - )) - } - } - } - } - } - } - } - is WalletAction.MultiWallet.FindTokensInUse -> { - val scanResponse = globalState.scanResponse ?: return - if (scanResponse.supportsHdWallet()) return - - val walletFactory = tapWalletManager.walletManagerFactory - val card = scanResponse.card - - val walletManager = walletState?.getWalletManager( - Currency.Blockchain(Blockchain.Ethereum, null) - ) - ?: walletFactory.makeWalletManagerForApp( - scanResponse, - Currency.Blockchain(Blockchain.Ethereum, null) - ) - - val tokenFinder = walletManager as? TokenFinder ?: return - scope.launch { - val result = tokenFinder.findTokens() - - withContext(Dispatchers.Main) { - when (result) { - is Result.Success -> { - if (result.data.isNotEmpty()) { - val blockchainNetwork = BlockchainNetwork( - walletManager.wallet.blockchain, - walletManager.wallet.publicKey.derivationPath?.rawPath, - walletManager.cardTokens.toList() - ) - currenciesRepository.saveUpdatedCurrency( - card.cardId, - blockchainNetwork - ) - store.dispatch( - WalletAction.MultiWallet.AddBlockchain( - blockchainNetwork, - walletManager - ) - ) - store.dispatch( - WalletAction.MultiWallet.AddTokens( - walletManager.cardTokens.toList(), - blockchainNetwork - ) - ) - } - } - } - } - } - } +// is WalletAction.MultiWallet.FindBlockchainsInUse -> { +// val scanResponse = globalState.scanResponse ?: return +// if (scanResponse.supportsHdWallet()) return +// +// val cardFirmware = scanResponse.card.firmwareVersion +// val blockchains = currenciesRepository.getBlockchains(cardFirmware) +// .filterNot { walletState?.blockchains?.contains(it) == true } +// .map { BlockchainNetwork(it, null, emptyList()) } +// val walletManagers = +// tapWalletManager.walletManagerFactory.makeWalletManagersForApp( +// scanResponse, +// blockchains +// ) +// +// scope.launch { +// walletManagers.map { walletManager -> +// async(Dispatchers.IO) { +// walletManager.safeUpdate() +// val wallet = walletManager.wallet +// val coinAmount = wallet.amounts[AmountType.Coin]?.value +// if (coinAmount != null && !coinAmount.isZero()) { +// scope.launch(Dispatchers.Main) { +// val blockchainNetwork = BlockchainNetwork.fromWalletManager(walletManager) +// if (walletState?.getWalletData(blockchainNetwork) == null) { +// store.dispatch(WalletAction.MultiWallet.AddBlockchain( +// blockchainNetwork, walletManager +// )) +// store.dispatch(WalletAction.LoadWallet.Success( +// wallet = wallet, +// blockchain = blockchainNetwork +// )) +// } +// } +// } +// } +// } +// } +// } +// is WalletAction.MultiWallet.FindTokensInUse -> { +// val scanResponse = globalState.scanResponse ?: return +// if (scanResponse.supportsHdWallet()) return +// +// val walletFactory = tapWalletManager.walletManagerFactory +// val card = scanResponse.card +// +// val walletManager = walletState?.getWalletManager( +// Currency.Blockchain(Blockchain.Ethereum, null) +// ) +// ?: walletFactory.makeWalletManagerForApp( +// scanResponse, +// Currency.Blockchain(Blockchain.Ethereum, null) +// ) +// +// val tokenFinder = walletManager as? TokenFinder ?: return +// scope.launch { +// val result = tokenFinder.findTokens() +// +// withContext(Dispatchers.Main) { +// when (result) { +// is Result.Success -> { +// if (result.data.isNotEmpty()) { +// val blockchainNetwork = BlockchainNetwork( +// walletManager.wallet.blockchain, +// walletManager.wallet.publicKey.derivationPath?.rawPath, +// walletManager.cardTokens.toList() +// ) +// currenciesRepository.saveUpdatedCurrency( +// card.cardId, +// blockchainNetwork +// ) +// store.dispatch( +// WalletAction.MultiWallet.AddBlockchain( +// blockchainNetwork, +// walletManager +// ) +// ) +// store.dispatch( +// WalletAction.MultiWallet.AddTokens( +// walletManager.cardTokens.toList(), +// blockchainNetwork +// ) +// ) +// } +// } +// } +// } +// } +// } } } diff --git a/app/src/main/java/com/tangem/tap/features/wallet/redux/reducers/MultiWalletReducer.kt b/app/src/main/java/com/tangem/tap/features/wallet/redux/reducers/MultiWalletReducer.kt index c3f65f3aa8..645f42af18 100644 --- a/app/src/main/java/com/tangem/tap/features/wallet/redux/reducers/MultiWalletReducer.kt +++ b/app/src/main/java/com/tangem/tap/features/wallet/redux/reducers/MultiWalletReducer.kt @@ -151,8 +151,8 @@ class MultiWalletReducer { is WalletAction.MultiWallet.SetPrimaryToken -> state.copy(primaryToken = action.token) - is WalletAction.MultiWallet.FindTokensInUse -> state - is WalletAction.MultiWallet.FindBlockchainsInUse -> state +// is WalletAction.MultiWallet.FindTokensInUse -> state +// is WalletAction.MultiWallet.FindBlockchainsInUse -> state is WalletAction.MultiWallet.SaveCurrencies -> state } }