From 404c496cf285acef3f84538bf67f1095754c8de6 Mon Sep 17 00:00:00 2001 From: Tangem Date: Mon, 30 Oct 2023 19:48:12 +0800 Subject: [PATCH] Updated on 2026-08-14 --- .../wallet/viewmodels/WalletViewModel.kt | 22 +++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/viewmodels/WalletViewModel.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/viewmodels/WalletViewModel.kt index e294047072..845c91eb1e 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/viewmodels/WalletViewModel.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/viewmodels/WalletViewModel.kt @@ -646,10 +646,23 @@ internal class WalletViewModel @Inject constructor( event = TokenScreenAnalyticsEvent.ButtonSend(cryptoCurrencyStatus.currency.symbol), ) - val currency = cryptoCurrencyStatus.currency as? CryptoCurrency.Token ?: return - viewModelScope.launch(dispatchers.io) { - val userWallet = getWallet(index = state.walletsListConfig.selectedWalletIndex) + val userWallet = getWallet(index = state.walletsListConfig.selectedWalletIndex) + when (cryptoCurrencyStatus.currency) { + is CryptoCurrency.Coin -> { + uiState = stateFactory.getStateWithClosedBottomSheet() + reduxStateHolder.dispatch( + action = TradeCryptoAction.New.SendCoin( + userWallet = userWallet, + coinStatus = cryptoCurrencyStatus, + ), + ) + } + is CryptoCurrency.Token -> sendToken(userWallet, cryptoCurrencyStatus) + } + } + private fun sendToken(userWallet: UserWallet, cryptoCurrencyStatus: CryptoCurrencyStatus) { + viewModelScope.launch(dispatchers.io) { getNetworkCoinStatusUseCase( userWalletId = userWallet.walletId, networkId = cryptoCurrencyStatus.currency.network.id, @@ -659,10 +672,11 @@ internal class WalletViewModel @Inject constructor( .take(count = 1) .collectLatest { it.onRight { coinStatus -> + uiState = stateFactory.getStateWithClosedBottomSheet() reduxStateHolder.dispatch( action = TradeCryptoAction.New.SendToken( userWallet = userWallet, - tokenCurrency = currency, + tokenCurrency = requireNotNull(cryptoCurrencyStatus.currency as? CryptoCurrency.Token), tokenFiatRate = cryptoCurrencyStatus.value.fiatRate, coinFiatRate = coinStatus.value.fiatRate, ),