Updated on 2026-08-14

This commit is contained in:
Tangem 2023-12-13 13:46:29 +03:00
parent 2df557e6d5
commit a34cb0687c
6 changed files with 31 additions and 1 deletions

View file

@ -0,0 +1,18 @@
package com.tangem.domain.tokens.models.analytics
import com.tangem.core.analytics.models.AnalyticsEvent
sealed class TokenSwapPromoAnalyticsEvent(
event: String,
params: Map<String, String> = mapOf(),
) : AnalyticsEvent("Swap Promo", event, params, null) {
object Close : TokenSwapPromoAnalyticsEvent(event = "Button - Close")
class Exchange(
token: String,
) : TokenSwapPromoAnalyticsEvent(
event = "Button - Exchange Now",
params = mapOf("Token" to token),
)
}

View file

@ -46,7 +46,7 @@ internal class TokenDetailsNotificationConverter(
coinSymbol = warning.blockchainSymbol,
)
is CryptoCurrencyWarning.SwapPromo -> TokenDetailsNotification.SwapPromo(
onSwapClick = clickIntents::onSwapClick,
onSwapClick = clickIntents::onSwapPromoClick,
onCloseClick = clickIntents::onSwapPromoDismiss,
)
}

View file

@ -45,4 +45,6 @@ interface TokenDetailsClickIntents {
fun onGoToProviderClick(url: String)
fun onSwapPromoDismiss()
fun onSwapPromoClick()
}

View file

@ -29,6 +29,7 @@ import com.tangem.domain.tokens.model.NetworkAddress
import com.tangem.domain.tokens.models.analytics.TokenExchangeAnalyticsEvent
import com.tangem.domain.tokens.models.analytics.TokenReceiveAnalyticsEvent
import com.tangem.domain.tokens.models.analytics.TokenScreenAnalyticsEvent
import com.tangem.domain.tokens.models.analytics.TokenSwapPromoAnalyticsEvent
import com.tangem.domain.txhistory.usecase.GetExplorerTransactionUrlUseCase
import com.tangem.domain.txhistory.usecase.GetTxHistoryItemsCountUseCase
import com.tangem.domain.txhistory.usecase.GetTxHistoryItemsUseCase
@ -552,9 +553,15 @@ internal class TokenDetailsViewModel @Inject constructor(
override fun onSwapPromoDismiss() {
viewModelScope.launch(dispatchers.main) {
shouldShowSwapPromoTokenUseCase.neverToShow()
analyticsEventsHandler.send(TokenSwapPromoAnalyticsEvent.Close)
}
}
override fun onSwapPromoClick() {
onSwapClick()
analyticsEventsHandler.send(TokenSwapPromoAnalyticsEvent.Exchange(cryptoCurrency.symbol))
}
private companion object {
const val EXCHANGE_STATUS_UPDATE_DELAY = 10_000L
}

View file

@ -63,4 +63,6 @@ sealed class WalletScreenAnalyticsEvent {
object NoticeWalletLocked : MainScreen(event = "Notice - Wallet Locked")
object WalletUnlockTapped : MainScreen(event = "Button - Wallet Unlock Tapped")
}
object SwapPromo : AnalyticsEvent(category = "Swap Promo", event = "Button - Close")
}

View file

@ -779,6 +779,7 @@ internal class WalletViewModel @Inject constructor(
override fun onCloseSwapPromoNotificationClick() {
viewModelScope.launch(dispatchers.main) {
shouldShowSwapPromoWalletUseCase.neverToShow()
analyticsEventsHandler.send(WalletScreenAnalyticsEvent.SwapPromo)
}
}