diff --git a/app/src/main/java/com/tangem/tap/common/extensions/WalletManager.kt b/app/src/main/java/com/tangem/tap/common/extensions/WalletManager.kt index 096f5c96bb..0427435795 100644 --- a/app/src/main/java/com/tangem/tap/common/extensions/WalletManager.kt +++ b/app/src/main/java/com/tangem/tap/common/extensions/WalletManager.kt @@ -26,10 +26,8 @@ import timber.log.Timber "or WalletCurrenciesManager.update(...) (to update only one user wallet blockchain and its tokens) instead", ) @Suppress("MagicNumber") -suspend fun WalletManager.safeUpdate(): Result = try { - val scanResponse = store.state.globalState.scanResponse - - if (scanResponse?.isDemoCard() == true || TestActions.testAmountInjectionForWalletManagerEnabled) { +suspend fun WalletManager.safeUpdate(isDemoCard: Boolean): Result = try { + if (isDemoCard || TestActions.testAmountInjectionForWalletManagerEnabled) { delay(500) TestActions.testAmountInjectionForWalletManagerEnabled = false Result.Success(wallet) diff --git a/app/src/main/java/com/tangem/tap/domain/walletconnect/WalletConnectSdkHelper.kt b/app/src/main/java/com/tangem/tap/domain/walletconnect/WalletConnectSdkHelper.kt index f84ad537dd..e9f267c509 100644 --- a/app/src/main/java/com/tangem/tap/domain/walletconnect/WalletConnectSdkHelper.kt +++ b/app/src/main/java/com/tangem/tap/domain/walletconnect/WalletConnectSdkHelper.kt @@ -16,7 +16,6 @@ import com.tangem.common.extensions.hexToBytes import com.tangem.common.extensions.toDecompressedPublicKey import com.tangem.common.extensions.toHexString import com.tangem.core.analytics.Analytics -import com.tangem.domain.common.BlockchainNetwork import com.tangem.domain.common.extensions.fromNetworkId import com.tangem.operations.sign.SignHashCommand import com.tangem.tap.common.analytics.events.AnalyticsParam @@ -31,12 +30,14 @@ import com.tangem.tap.domain.walletconnect2.domain.WcEthereumTransaction import com.tangem.tap.domain.walletconnect2.domain.models.EthTransactionData import com.tangem.tap.domain.walletconnect2.domain.models.binance.WcBinanceTradeOrder import com.tangem.tap.domain.walletconnect2.domain.models.binance.WcBinanceTransferOrder +import com.tangem.tap.features.demo.isDemoCard import com.tangem.tap.features.details.redux.walletconnect.* import com.tangem.tap.features.details.ui.walletconnect.dialogs.PersonalSignDialogData import com.tangem.tap.features.details.ui.walletconnect.dialogs.TransactionRequestDialogData import com.tangem.tap.proxy.redux.DaggerGraphState import com.tangem.tap.store import com.tangem.tap.tangemSdkManager +import com.tangem.tap.userWalletsListManager import com.trustwallet.walletconnect.models.ethereum.WCEthereumSignMessage.WCSignType.* import timber.log.Timber import java.math.BigDecimal @@ -49,7 +50,7 @@ class WalletConnectSdkHelper { val blockchain = Blockchain.fromNetworkId(data.networkId) ?: return null val walletManager = getWalletManager(blockchain, data.rawDerivationPath) ?: return null - walletManager.safeUpdate() + walletManager.safeUpdate(isDemoCard()) val wallet = walletManager.wallet val balance = wallet.amounts[AmountType.Coin]?.value ?: return null @@ -108,13 +109,20 @@ class WalletConnectSdkHelper { ) } - private fun getWalletManager(blockchain: Blockchain, derivationPath: String?): WalletManager? { - val blockchainNetwork = BlockchainNetwork( + fun isDemoCard(): Boolean { + val userWallet = userWalletsListManager.selectedUserWalletSync ?: return false + return userWallet.scanResponse.isDemoCard() + } + + private suspend fun getWalletManager(blockchain: Blockchain, derivationPath: String?): WalletManager? { + val userWallet = userWalletsListManager.selectedUserWalletSync ?: return null + val walletManagerFacade = store.state.daggerGraphState + .get(DaggerGraphState::walletManagersFacade) + return walletManagerFacade.getOrCreateWalletManager( + userWalletId = userWallet.walletId, blockchain = blockchain, derivationPath = derivationPath, - tokens = emptyList(), ) - return store.state.walletState.getWalletManager(blockchainNetwork) } suspend fun completeTransaction(data: WcTransactionData, cardId: String?): String? { diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/OnboardingManager.kt b/app/src/main/java/com/tangem/tap/features/onboarding/OnboardingManager.kt index bf80a5b458..c7dfdae94d 100644 --- a/app/src/main/java/com/tangem/tap/features/onboarding/OnboardingManager.kt +++ b/app/src/main/java/com/tangem/tap/features/onboarding/OnboardingManager.kt @@ -16,6 +16,7 @@ import com.tangem.tap.features.wallet.models.Currency import com.tangem.tap.features.wallet.models.hasPendingTransactions import com.tangem.tap.features.wallet.redux.ProgressState import com.tangem.data.source.preferences.storage.UsedCardsPrefStorage +import com.tangem.tap.features.demo.isDemoCard import timber.log.Timber import java.math.BigDecimal @@ -38,7 +39,8 @@ class OnboardingManager( } suspend fun updateBalance(walletManager: WalletManager): OnboardingWalletBalance { - val balance = when (val result = walletManager.safeUpdate()) { + val isDemoCard = scanResponse.isDemoCard() + val balance = when (val result = walletManager.safeUpdate(isDemoCard)) { is Result.Success -> { val wallet = walletManager.wallet val valueOfAmount = wallet.amounts[AmountType.Coin]?.value diff --git a/app/src/main/java/com/tangem/tap/features/wallet/redux/middlewares/TradeCryptoMiddleware.kt b/app/src/main/java/com/tangem/tap/features/wallet/redux/middlewares/TradeCryptoMiddleware.kt index 666f1ac84e..beeb8d029c 100644 --- a/app/src/main/java/com/tangem/tap/features/wallet/redux/middlewares/TradeCryptoMiddleware.kt +++ b/app/src/main/java/com/tangem/tap/features/wallet/redux/middlewares/TradeCryptoMiddleware.kt @@ -74,6 +74,7 @@ class TradeCryptoMiddleware { } } + @Deprecated("Use proceedNewBuyAction instead") private fun proceedBuyAction(state: () -> AppState?, action: TradeCryptoAction.Buy) { val selectedWalletData = store.state.walletState.selectedWalletData ?: return val currency = chooseAppropriateCurrency(store.state.walletState) ?: return diff --git a/app/src/main/java/com/tangem/tap/network/exchangeServices/CurrencyExchangeManager.kt b/app/src/main/java/com/tangem/tap/network/exchangeServices/CurrencyExchangeManager.kt index 037b139a49..09274aa9ac 100644 --- a/app/src/main/java/com/tangem/tap/network/exchangeServices/CurrencyExchangeManager.kt +++ b/app/src/main/java/com/tangem/tap/network/exchangeServices/CurrencyExchangeManager.kt @@ -12,6 +12,7 @@ import com.tangem.tap.common.extensions.safeUpdate import com.tangem.tap.common.redux.global.CryptoCurrencyName import com.tangem.tap.common.redux.global.GlobalAction import com.tangem.tap.domain.TangemSigner +import com.tangem.tap.features.demo.isDemoCard import com.tangem.tap.features.wallet.models.Currency import com.tangem.tap.proxy.redux.DaggerGraphState import com.tangem.tap.store @@ -89,7 +90,7 @@ class CurrencyExchangeManager( } suspend fun buyErc20TestnetTokens(card: CardDTO, walletManager: EthereumWalletManager, destinationAddress: String) { - walletManager.safeUpdate() + walletManager.safeUpdate(card.isDemoCard()) val amountToSend = Amount(walletManager.wallet.blockchain)