From 613e07734e8e599bb9689638d7303222eb2a77fe Mon Sep 17 00:00:00 2001 From: Tangem Date: Thu, 21 Sep 2023 18:19:46 +0300 Subject: [PATCH] Updated on 2026-08-14 --- .../middlewares/TradeCryptoMiddleware.kt | 38 ++++++++++++------- 1 file changed, 25 insertions(+), 13 deletions(-) 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 62cd206aab..6b321e4e9d 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 @@ -31,6 +31,7 @@ import com.tangem.tap.features.send.redux.SendAction import com.tangem.tap.features.wallet.models.Currency import com.tangem.tap.features.wallet.redux.WalletAction import com.tangem.tap.features.wallet.redux.WalletState +import com.tangem.tap.features.wallet.redux.models.WalletDialog import com.tangem.tap.network.exchangeServices.CurrencyExchangeManager import com.tangem.tap.network.exchangeServices.buyErc20TestnetTokens import com.tangem.tap.proxy.redux.DaggerGraphState @@ -120,14 +121,32 @@ class TradeCryptoMiddleware { private fun proceedNewBuyAction(state: () -> AppState?, action: TradeCryptoAction.New.Buy) { val networkAddress = action.cryptoCurrencyStatus.value.networkAddress?.defaultAddress ?: return - if (action.checkUserLocation && state()?.globalState?.userCountryCode == RUSSIA_COUNTRY_CODE) { - store.dispatchOnMain(WalletAction.DialogAction.RussianCardholdersWarningDialog()) - return - } - val status = action.cryptoCurrencyStatus val currency = status.currency val blockchain = Blockchain.fromId(currency.network.id.value) + val exchangeManager = store.state.globalState.exchangeManager + val topUrl = exchangeManager.getUrl( + action = CurrencyExchangeManager.Action.Buy, + blockchain = blockchain, + cryptoCurrencyName = currency.symbol, + fiatCurrencyName = action.appCurrencyCode, + walletAddress = networkAddress, + ) + + if (action.checkUserLocation && state()?.globalState?.userCountryCode == RUSSIA_COUNTRY_CODE) { + val dialogData = topUrl?.let { + WalletDialog.RussianCardholdersWarningDialog.Data( + topUpUrl = it, + ) + } + store.dispatchOnMain( + WalletAction.DialogAction.RussianCardholdersWarningDialog( + dialogData = dialogData, + ), + ) + return + } + if (currency is CryptoCurrency.Token && currency.network.isTestnet) { scope.launch { val walletManager = store.state.daggerGraphState @@ -152,14 +171,7 @@ class TradeCryptoMiddleware { return } - val exchangeManager = store.state.globalState.exchangeManager - exchangeManager.getUrl( - action = CurrencyExchangeManager.Action.Buy, - blockchain = blockchain, - cryptoCurrencyName = currency.symbol, - fiatCurrencyName = action.appCurrencyCode, - walletAddress = networkAddress, - )?.let { + topUrl?.let { store.dispatchOpenUrl(it) Analytics.send(Token.Topup.ScreenOpened()) }