Updated on 2026-08-14

This commit is contained in:
Tangem 2025-12-11 18:49:21 +05:00
parent e48ff5956d
commit 2633d562b5
6 changed files with 26 additions and 18 deletions

View file

@ -8,42 +8,47 @@ sealed class TangemPayAnalyticsEvents(
params: Map<String, String> = emptyMap(),
) : AnalyticsEvent(category = categoryName, event = event, params = params) {
data object ActivationScreenOpened : TangemPayAnalyticsEvents(
class ActivationScreenOpened : TangemPayAnalyticsEvents(
categoryName = "Visa Onboarding",
event = "Activation Screen Opened",
event = "Visa Activation Screen Opened",
)
data object ViewTermsClicked : TangemPayAnalyticsEvents(
class ViewTermsClicked : TangemPayAnalyticsEvents(
categoryName = "Visa Onboarding",
event = "Button - Visa View Terms",
)
data object GetCardClicked : TangemPayAnalyticsEvents(
class GetCardClicked : TangemPayAnalyticsEvents(
categoryName = "Visa Onboarding",
event = "Button - Visa Get Card",
)
data object KycFlowOpened : TangemPayAnalyticsEvents(
class KycFlowOpened : TangemPayAnalyticsEvents(
categoryName = "Visa Onboarding",
event = "Visa KYC Flow Opened",
)
data object IssuingBannerDisplayed : TangemPayAnalyticsEvents(
class IssuingBannerDisplayed : TangemPayAnalyticsEvents(
categoryName = "Visa Onboarding",
event = "Visa Issuing Banner Displayed",
)
data object MainScreenOpened : TangemPayAnalyticsEvents(
class MainScreenOpened : TangemPayAnalyticsEvents(
categoryName = "Visa Screen",
event = "Visa Main Screen Opened",
)
data object ReceiveFundsClicked : TangemPayAnalyticsEvents(
class AddFundsClicked : TangemPayAnalyticsEvents(
categoryName = "Visa Screen",
event = "Button - Visa Add Funds",
)
class ReceiveFundsClicked : TangemPayAnalyticsEvents(
categoryName = "Visa Screen",
event = "Button - Visa Receive",
)
data object SwapClicked : TangemPayAnalyticsEvents(
class SwapClicked : TangemPayAnalyticsEvents(
categoryName = "Visa Screen",
event = "Button - Visa Swap",
)

View file

@ -30,7 +30,7 @@ class DefaultKycModel @Inject constructor(
val uiState = _uiState.asStateFlow()
init {
analytics.send(TangemPayAnalyticsEvents.KycFlowOpened)
analytics.send(TangemPayAnalyticsEvents.KycFlowOpened())
modelScope.launch {
try {
kycRepository.getKycStartInfo(params.userWalletId).getOrNull()?.let { _uiState.emit(it) }

View file

@ -101,6 +101,7 @@ internal class TangemPayDetailsModel @Inject constructor(
val bottomSheetNavigation: SlotNavigation<TangemPayDetailsNavigation> = SlotNavigation()
init {
analytics.send(TangemPayAnalyticsEvents.MainScreenOpened())
handleBalanceHiding()
fetchAddToWalletBanner()
fetchBalance()
@ -212,6 +213,7 @@ internal class TangemPayDetailsModel @Inject constructor(
}
override fun onClickAddFunds() {
analytics.send(TangemPayAnalyticsEvents.AddFundsClicked())
val currentBalance = balance
val depositAddress = currentBalance?.depositAddress
if (currentBalance == null || depositAddress == null) {
@ -352,7 +354,7 @@ internal class TangemPayDetailsModel @Inject constructor(
}
override fun onClickSwap(data: TangemPayTopUpData) {
analytics.send(TangemPayAnalyticsEvents.SwapClicked)
analytics.send(TangemPayAnalyticsEvents.SwapClicked())
bottomSheetNavigation.dismiss()
router.push(
AppRoute.Swap(
@ -371,7 +373,7 @@ internal class TangemPayDetailsModel @Inject constructor(
}
override fun onClickReceive(data: TangemPayTopUpData) {
analytics.send(TangemPayAnalyticsEvents.ReceiveFundsClicked)
analytics.send(TangemPayAnalyticsEvents.ReceiveFundsClicked())
bottomSheetNavigation.dismiss()
val config = TokenReceiveConfig(
shouldShowWarning = false,

View file

@ -234,7 +234,7 @@ internal object TangemPayTxHistoryDetailsConverter :
)
is TangemPayTxHistoryItem.Spend -> persistentListOf(
ButtonState(
text = resourceReference(R.string.tangem_pay_dispute),
text = resourceReference(R.string.tangem_pay_get_help),
onClick = this.onDisputeClick,
),
)

View file

@ -50,7 +50,6 @@ internal class TangemPayOnboardingModel @Inject constructor(
field = MutableStateFlow(getInitialState())
init {
analytics.send(TangemPayAnalyticsEvents.ActivationScreenOpened)
modelScope.launch {
when (params) {
is TangemPayOnboardingComponent.Params.ContinueOnboarding -> {
@ -66,6 +65,8 @@ internal class TangemPayOnboardingModel @Inject constructor(
}
private fun showOnboarding() {
// TODO: move analytics to init block [REDACTED_JIRA]
analytics.send(TangemPayAnalyticsEvents.ActivationScreenOpened())
uiState.update {
TangemPayOnboardingScreenState.Content(
onBack = it.onBack,
@ -118,12 +119,12 @@ internal class TangemPayOnboardingModel @Inject constructor(
}
private fun onTermsClick() {
analytics.send(TangemPayAnalyticsEvents.ViewTermsClicked)
analytics.send(TangemPayAnalyticsEvents.ViewTermsClicked())
urlOpener.openUrl(TangemPayConstants.TERMS_AND_LIMITS_LINK)
}
private fun onGetCardClick() {
analytics.send(TangemPayAnalyticsEvents.GetCardClicked)
analytics.send(TangemPayAnalyticsEvents.GetCardClicked())
uiState.transformerUpdate(TangemPayOnboardingButtonLoadingTransformer(isLoading = true))
modelScope.launch {
// TODO implement selector

View file

@ -27,8 +27,8 @@ internal class WalletTangemPayAnalyticsEventSender @Inject constructor(
val event = when {
customerInfo.orderStatus == OrderStatus.CANCELED -> return // ignore cancelled state on analytics
!customerInfo.info.isKycApproved -> return // ignore kyc not approved state on analytics
cardInfo != null && productInstance != null -> TangemPayAnalyticsEvents.MainScreenOpened
else -> TangemPayAnalyticsEvents.IssuingBannerDisplayed
cardInfo != null && productInstance != null -> return
else -> TangemPayAnalyticsEvents.IssuingBannerDisplayed()
}
if (sentEvents.add(event)) {