Updated on 2026-08-14
This commit is contained in:
parent
2df557e6d5
commit
a34cb0687c
6 changed files with 31 additions and 1 deletions
|
|
@ -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),
|
||||
)
|
||||
}
|
||||
|
|
@ -46,7 +46,7 @@ internal class TokenDetailsNotificationConverter(
|
|||
coinSymbol = warning.blockchainSymbol,
|
||||
)
|
||||
is CryptoCurrencyWarning.SwapPromo -> TokenDetailsNotification.SwapPromo(
|
||||
onSwapClick = clickIntents::onSwapClick,
|
||||
onSwapClick = clickIntents::onSwapPromoClick,
|
||||
onCloseClick = clickIntents::onSwapPromoDismiss,
|
||||
)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -45,4 +45,6 @@ interface TokenDetailsClickIntents {
|
|||
fun onGoToProviderClick(url: String)
|
||||
|
||||
fun onSwapPromoDismiss()
|
||||
|
||||
fun onSwapPromoClick()
|
||||
}
|
||||
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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")
|
||||
}
|
||||
|
|
@ -779,6 +779,7 @@ internal class WalletViewModel @Inject constructor(
|
|||
override fun onCloseSwapPromoNotificationClick() {
|
||||
viewModelScope.launch(dispatchers.main) {
|
||||
shouldShowSwapPromoWalletUseCase.neverToShow()
|
||||
analyticsEventsHandler.send(WalletScreenAnalyticsEvent.SwapPromo)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue