From 944a01ba42706444e491aeb9cad42057f57d9070 Mon Sep 17 00:00:00 2001 From: Tangem Date: Wed, 12 May 2021 10:53:40 +0300 Subject: [PATCH] Updated on 2026-08-14 --- .../tap/features/wallet/redux/WalletState.kt | 3 +++ .../redux/middlewares/MultiWalletMiddleware.kt | 17 +++++++++++++---- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/tangem/tap/features/wallet/redux/WalletState.kt b/app/src/main/java/com/tangem/tap/features/wallet/redux/WalletState.kt index 244f7f026d..0dabc601c8 100644 --- a/app/src/main/java/com/tangem/tap/features/wallet/redux/WalletState.kt +++ b/app/src/main/java/com/tangem/tap/features/wallet/redux/WalletState.kt @@ -81,6 +81,9 @@ data class WalletState( && (walletData.token == null || walletData.token != store.state.walletState.primaryToken)) { val walletManager = getWalletManager(walletData.currencyData.currencySymbol) ?: return true + + if (walletData.token == null && walletManager.presetTokens.isNotEmpty()) return false + val wallet = walletManager.wallet if (walletData.blockchain != null) { return wallet.recentTransactions.toPendingTransactions(wallet.address).isEmpty() && 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 d68d7863f2..da28809df6 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 @@ -39,10 +39,10 @@ class MultiWalletMiddleware { globalState?.scanNoteResponse?.card?.cardId?.let { currenciesRepository.saveAddedToken(it, action.token) } - addToken(action.token, walletState) + addToken(action.token, walletState, globalState) } is WalletAction.MultiWallet.AddTokens -> { - action.tokens.map { addToken(it, walletState) } + action.tokens.map { addToken(it, walletState, globalState) } } is WalletAction.MultiWallet.AddBlockchain -> { globalState?.scanNoteResponse?.card?.let { card -> @@ -62,6 +62,8 @@ class MultiWalletMiddleware { is WalletAction.MultiWallet.RemoveWallet -> { val cardId = globalState?.scanNoteResponse?.card?.cardId if (action.walletData.token != null) { + walletState?.getWalletManagerForToken(action.walletData.token.symbol) + ?.removeToken(action.walletData.token) cardId?.let { currenciesRepository.removeToken(it, action.walletData.token) } } else if (action.walletData.blockchain != null) { cardId?.let { currenciesRepository.removeBlockchain(it, action.walletData.blockchain) } @@ -120,8 +122,15 @@ class MultiWalletMiddleware { } } - private fun addToken(token: Token, walletState: WalletState?) { - val walletManager = walletState?.getWalletManager(token.symbol) + private fun addToken(token: Token, walletState: WalletState?, globalState: GlobalState?) { + val card = globalState?.scanNoteResponse?.card ?: return + val walletManager = walletState?.getWalletManager(token.symbol) ?: + globalState.tapWalletManager.walletManagerFactory.makeWalletManagerForApp( + card = card, + blockchain = Blockchain.Ethereum + )?.also { walletManager -> + store.dispatch(WalletAction.MultiWallet.AddWalletManagers(walletManager)) + } scope.launch { val result = walletManager?.addToken(token) withContext(Dispatchers.Main) {