From bec0636e51a642ea717db5cd4adca34d48d7f063 Mon Sep 17 00:00:00 2001 From: Tangem Date: Thu, 15 Aug 2024 15:35:33 +0500 Subject: [PATCH] Updated on 2026-08-14 --- .../presentation/viewmodel/SendViewModel.kt | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/viewmodel/SendViewModel.kt b/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/viewmodel/SendViewModel.kt index 4c9d9bfe6a..68cbb4d8dc 100644 --- a/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/viewmodel/SendViewModel.kt +++ b/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/viewmodel/SendViewModel.kt @@ -35,6 +35,8 @@ import com.tangem.domain.transaction.usecase.* import com.tangem.domain.txhistory.usecase.GetExplorerTransactionUrlUseCase import com.tangem.domain.txhistory.usecase.GetFixedTxHistoryItemsUseCase import com.tangem.domain.utils.convertToSdkAmount +import com.tangem.domain.txhistory.usecase.GetTxHistoryItemsCountUseCase +import com.tangem.domain.txhistory.usecase.GetTxHistoryItemsUseCase import com.tangem.domain.wallets.models.UserWallet import com.tangem.domain.wallets.models.UserWalletId import com.tangem.domain.wallets.usecase.GetUserWalletUseCase @@ -56,6 +58,7 @@ import com.tangem.utils.Provider import com.tangem.utils.coroutines.* import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.delay import kotlinx.coroutines.flow.* import kotlinx.coroutines.launch import timber.log.Timber @@ -75,6 +78,8 @@ internal class SendViewModel @Inject constructor( private val getFeePaidCryptoCurrencyStatusSyncUseCase: GetFeePaidCryptoCurrencyStatusSyncUseCase, private val getCryptoCurrencyUseCase: GetCryptoCurrencyUseCase, private val getNetworkAddressesUseCase: GetNetworkAddressesUseCase, + private val getTxHistoryItemsCountUseCase: GetTxHistoryItemsCountUseCase, + private val getTxHistoryItemsUseCase: GetTxHistoryItemsUseCase, private val getFixedTxHistoryItemsUseCase: GetFixedTxHistoryItemsUseCase, private val getFeeUseCase: GetFeeUseCase, private val sendTransactionUseCase: SendTransactionUseCase, @@ -194,7 +199,6 @@ internal class SendViewModel @Inject constructor( ) } - // todo convert to StateFlow val uiState: MutableStateFlow = MutableStateFlow( value = stateFactory.getInitialState(), ) @@ -932,7 +936,8 @@ internal class SendViewModel @Inject constructor( coroutineScope.launch { // we should update network to find pending tx after 1 sec fetchPendingTransactionsUseCase(userWallet.walletId, setOf(cryptoCurrency.network)) - // we should update network for new balance + // we should update tx history and network for new balance + updateTxHistory() updateDelayedCurrencyStatusUseCase( userWalletId = userWallet.walletId, network = cryptoCurrency.network, @@ -942,6 +947,22 @@ internal class SendViewModel @Inject constructor( } } + private suspend fun updateTxHistory() { + delay(BALANCE_UPDATE_DELAY) + val txHistoryItemsCountEither = getTxHistoryItemsCountUseCase( + userWalletId = userWalletId, + currency = cryptoCurrency, + ) + + txHistoryItemsCountEither.onRight { + getTxHistoryItemsUseCase( + userWalletId = userWalletId, + currency = cryptoCurrency, + refresh = true, + ) + } + } + private fun onCheckFeeUpdate() { val sendState = uiState.value.sendState ?: return val isSuccess = sendState.isSuccess