Updated on 2026-08-14

This commit is contained in:
Tangem 2024-10-31 13:32:27 +05:00
parent 4a59f88990
commit a22f5b7ef8
10 changed files with 37 additions and 12 deletions

View file

@ -1,6 +1,7 @@
package com.tangem.tap.common.analytics.events
import com.tangem.core.analytics.models.AnalyticsEvent
import com.tangem.core.analytics.models.AnalyticsParam.Key.TOKEN_PARAM
/**
[REDACTED_AUTHOR]
@ -17,7 +18,12 @@ sealed class Token(
params: Map<String, String> = mapOf(),
) : Token("Token / Receive", event, params) {
class ScreenOpened : Receive("Receive Screen Opened")
class ScreenOpened(
val token: String,
) : Receive(
event = "Receive Screen Opened",
params = mapOf(TOKEN_PARAM to token),
)
class ButtonCopyAddress : Receive("Button - Copy Address")
class ButtonShareAddress : Receive("Button - Share Address")
}

View file

@ -38,7 +38,7 @@ internal class AddressInfoBottomSheetDialog(
override fun show() {
super.show()
Analytics.send(Token.Receive.ScreenOpened())
Analytics.send(Token.Receive.ScreenOpened(stateDialog.currency.currencySymbol))
showData(data = stateDialog.addressData)
}

View file

@ -1,13 +1,17 @@
package com.tangem.domain.tokens.model.analytics
import com.tangem.core.analytics.models.AnalyticsEvent
import com.tangem.core.analytics.models.AnalyticsParam.Key.TOKEN_PARAM
sealed class TokenReceiveAnalyticsEvent(
event: String,
params: Map<String, String> = mapOf(),
) : AnalyticsEvent("Token / Receive", event, params, null) {
object ReceiveScreenOpened : TokenReceiveAnalyticsEvent(event = "Receive Screen Opened")
class ReceiveScreenOpened(token: String) : TokenReceiveAnalyticsEvent(
event = "Receive Screen Opened",
params = mapOf(TOKEN_PARAM to token),
)
class ButtonCopyAddress(token: String) : TokenReceiveAnalyticsEvent(
event = "Button - Copy Address",

View file

@ -44,6 +44,13 @@ internal class MarketDetailsAnalyticsEvent(
"Link" to linkTitle,
),
)
fun exchangesScreenOpened() = MarketDetailsAnalyticsEvent(
event = "Exchanges Screen Opened",
params = mapOf(
"Token" to token.symbol,
),
)
}
enum class IntervalType(val source: String) {

View file

@ -527,6 +527,8 @@ internal class MarketsTokenDetailsModel @Inject constructor(
private fun onListedOnClick(exchangesCount: Int) {
modelScope.launch {
analyticsEventHandler.send(analyticsEventBuilder.exchangesScreenOpened())
showBottomSheet(content = ExchangesBottomSheetContent.Loading(exchangesCount))
// Delay to show the bottom sheet

View file

@ -20,7 +20,6 @@ import com.tangem.domain.managetokens.CheckCurrencyUnsupportedUseCase
import com.tangem.domain.managetokens.model.CurrencyUnsupportedState
import com.tangem.domain.markets.SaveMarketTokensUseCase
import com.tangem.domain.markets.TokenMarketInfo
import com.tangem.domain.tokens.model.Network
import com.tangem.domain.wallets.models.UserWalletId
import com.tangem.domain.wallets.usecase.GetSelectedWalletUseCase
import com.tangem.features.markets.impl.R

View file

@ -559,7 +559,7 @@ internal class TokenDetailsViewModel @Inject constructor(
viewModelScope.launch(dispatchers.main) {
analyticsEventsHandler.send(TokenScreenAnalyticsEvent.ButtonReceive(cryptoCurrency.symbol))
analyticsEventsHandler.send(TokenReceiveAnalyticsEvent.ReceiveScreenOpened)
analyticsEventsHandler.send(TokenReceiveAnalyticsEvent.ReceiveScreenOpened(cryptoCurrency.symbol))
internalUiState.value = stateFactory.getStateWithReceiveBottomSheet(
currency = cryptoCurrency,

View file

@ -87,7 +87,12 @@ sealed class WalletScreenAnalyticsEvent {
data object NoticeScanYourCardTapped : MainScreen(event = "Notice - Scan Your Card Tapped")
data object WalletUnlockTapped : MainScreen(event = "Notice - Wallet Unlock Tapped")
data object NetworksUnreachable : MainScreen(event = "Notice - Networks Unreachable")
class NetworksUnreachable(
tokens: List<String>,
) : MainScreen(
event = "Notice - Networks Unreachable",
params = mapOf("Tokens" to tokens.joinToString()),
)
data object MissingAddresses : MainScreen(event = "Notice - Missing Addresses")

View file

@ -166,12 +166,12 @@ internal class TokenListAnalyticsSender @Inject constructor(
}
private fun sendUnreachableNetworksEventIfNeeded(currenciesStatuses: List<CryptoCurrencyStatus>) {
val hasUnreachableCurrencies = currenciesStatuses.any {
it.value is CryptoCurrencyStatus.Unreachable
}
val unreachableCurrencies = currenciesStatuses
.filter { it.value is CryptoCurrencyStatus.Unreachable }
.map { it.currency.symbol }
if (hasUnreachableCurrencies) {
analyticsEventHandler.send(MainScreen.NetworksUnreachable)
if (unreachableCurrencies.isNotEmpty()) {
analyticsEventHandler.send(MainScreen.NetworksUnreachable(unreachableCurrencies))
}
}
}

View file

@ -185,7 +185,9 @@ internal class WalletCurrencyActionsClickIntentsImplementor @Inject constructor(
event = TokenScreenAnalyticsEvent.ButtonReceive(cryptoCurrencyStatus.currency.symbol),
)
analyticsEventHandler.send(event = TokenReceiveAnalyticsEvent.ReceiveScreenOpened)
analyticsEventHandler.send(
event = TokenReceiveAnalyticsEvent.ReceiveScreenOpened(cryptoCurrencyStatus.currency.symbol),
)
stateHolder.showBottomSheet(
createReceiveBottomSheetContent(