Updated on 2026-08-14

This commit is contained in:
Tangem 2023-10-20 15:42:49 +08:00
parent ad115ebb5a
commit f186efc935
8 changed files with 87 additions and 31 deletions

View file

@ -247,7 +247,6 @@ private fun WalletBottomSheets(state: WalletState) {
is WalletBottomSheetConfig -> {
WalletBottomSheet(config = bottomSheetConfig)
}
is TokenReceiveBottomSheetConfig -> {
TokenReceiveBottomSheet(config = bottomSheetConfig)
}

View file

@ -50,6 +50,7 @@ import com.tangem.domain.tokens.model.CryptoCurrencyStatus
import com.tangem.domain.tokens.model.NetworkGroup
import com.tangem.domain.tokens.model.TokenList
import com.tangem.domain.tokens.models.analytics.TokenReceiveAnalyticsEvent
import com.tangem.domain.tokens.models.analytics.TokenScreenAnalyticsEvent
import com.tangem.domain.txhistory.usecase.GetExplorerTransactionUrlUseCase
import com.tangem.domain.txhistory.usecase.GetTxHistoryItemsCountUseCase
import com.tangem.domain.txhistory.usecase.GetTxHistoryItemsUseCase
@ -602,6 +603,11 @@ internal class WalletViewModel @Inject constructor(
override fun onBuyClick(cryptoCurrencyStatus: CryptoCurrencyStatus) {
val state = uiState as? WalletState.ContentState ?: return
analyticsEventsHandler.send(
event = TokenScreenAnalyticsEvent.ButtonBuy(cryptoCurrencyStatus.currency.symbol),
)
val wallet = getWallet(index = state.walletsListConfig.selectedWalletIndex)
reduxStateHolder.dispatch(
@ -614,6 +620,10 @@ internal class WalletViewModel @Inject constructor(
}
override fun onSwapClick(cryptoCurrencyStatus: CryptoCurrencyStatus) {
analyticsEventsHandler.send(
event = TokenScreenAnalyticsEvent.ButtonExchange(cryptoCurrencyStatus.currency.symbol),
)
reduxStateHolder.dispatch(TradeCryptoAction.New.Swap(cryptoCurrencyStatus.currency))
}
@ -622,12 +632,14 @@ internal class WalletViewModel @Inject constructor(
val userWallet = getWallet(index = state.walletsListConfig.selectedWalletIndex)
val coinStatus = if (userWallet.isMultiCurrency) cryptoCurrencyStatus else singleWalletCryptoCurrencyStatus
coinStatus ?: return
analyticsEventsHandler.send(
event = TokenScreenAnalyticsEvent.ButtonSend(coinStatus.currency.symbol),
)
reduxStateHolder.dispatch(
action = TradeCryptoAction.New.SendCoin(
userWallet = userWallet,
coinStatus = coinStatus ?: return,
),
action = TradeCryptoAction.New.SendCoin(userWallet = userWallet, coinStatus = coinStatus),
)
}
@ -639,6 +651,10 @@ internal class WalletViewModel @Inject constructor(
val state = uiState as? WalletState.ContentState ?: return
analyticsEventsHandler.send(
event = TokenScreenAnalyticsEvent.ButtonSend(cryptoCurrencyStatus.currency.symbol),
)
viewModelScope.launch(dispatchers.io) {
val userWallet = getWallet(index = state.walletsListConfig.selectedWalletIndex)
@ -669,6 +685,10 @@ internal class WalletViewModel @Inject constructor(
override fun onReceiveClick(cryptoCurrencyStatus: CryptoCurrencyStatus) {
val state = uiState as? WalletState.ContentState ?: return
analyticsEventsHandler.send(
event = TokenScreenAnalyticsEvent.ButtonReceive(cryptoCurrencyStatus.currency.symbol),
)
viewModelScope.launch(dispatchers.io) {
val userWallet = getWallet(index = state.walletsListConfig.selectedWalletIndex)
@ -677,6 +697,8 @@ internal class WalletViewModel @Inject constructor(
network = cryptoCurrencyStatus.currency.network,
)
analyticsEventsHandler.send(event = TokenReceiveAnalyticsEvent.ReceiveScreenOpened)
val currency = cryptoCurrencyStatus.currency
uiState = stateFactory.getStateWithOpenWalletBottomSheet(
content = TokenReceiveBottomSheetConfig(
@ -703,6 +725,10 @@ internal class WalletViewModel @Inject constructor(
override fun onCopyAddressClick(cryptoCurrencyStatus: CryptoCurrencyStatus) {
val state = uiState as? WalletState.ContentState ?: return
analyticsEventsHandler.send(
event = TokenScreenAnalyticsEvent.ButtonCopyAddress(cryptoCurrencyStatus.currency.symbol),
)
viewModelScope.launch(dispatchers.main) {
val userWallet = getWallet(index = state.walletsListConfig.selectedWalletIndex)
@ -725,6 +751,10 @@ internal class WalletViewModel @Inject constructor(
}
override fun onSellClick(cryptoCurrencyStatus: CryptoCurrencyStatus) {
analyticsEventsHandler.send(
event = TokenScreenAnalyticsEvent.ButtonSell(cryptoCurrencyStatus.currency.symbol),
)
reduxStateHolder.dispatch(
TradeCryptoAction.New.Sell(
cryptoCurrencyStatus = cryptoCurrencyStatus,
@ -888,6 +918,10 @@ internal class WalletViewModel @Inject constructor(
}
override fun onHideTokensClick(cryptoCurrencyStatus: CryptoCurrencyStatus) {
analyticsEventsHandler.send(
event = TokenScreenAnalyticsEvent.ButtonRemoveToken(cryptoCurrencyStatus.currency.symbol),
)
viewModelScope.launch(dispatchers.main) {
val state = uiState as? WalletState.ContentState ?: return@launch
val userWallet = getWallet(state.walletsListConfig.selectedWalletIndex)