Updated on 2026-08-14
This commit is contained in:
parent
e48ff5956d
commit
2633d562b5
6 changed files with 26 additions and 18 deletions
|
|
@ -8,42 +8,47 @@ sealed class TangemPayAnalyticsEvents(
|
||||||
params: Map<String, String> = emptyMap(),
|
params: Map<String, String> = emptyMap(),
|
||||||
) : AnalyticsEvent(category = categoryName, event = event, params = params) {
|
) : AnalyticsEvent(category = categoryName, event = event, params = params) {
|
||||||
|
|
||||||
data object ActivationScreenOpened : TangemPayAnalyticsEvents(
|
class ActivationScreenOpened : TangemPayAnalyticsEvents(
|
||||||
categoryName = "Visa Onboarding",
|
categoryName = "Visa Onboarding",
|
||||||
event = "Activation Screen Opened",
|
event = "Visa Activation Screen Opened",
|
||||||
)
|
)
|
||||||
|
|
||||||
data object ViewTermsClicked : TangemPayAnalyticsEvents(
|
class ViewTermsClicked : TangemPayAnalyticsEvents(
|
||||||
categoryName = "Visa Onboarding",
|
categoryName = "Visa Onboarding",
|
||||||
event = "Button - Visa View Terms",
|
event = "Button - Visa View Terms",
|
||||||
)
|
)
|
||||||
|
|
||||||
data object GetCardClicked : TangemPayAnalyticsEvents(
|
class GetCardClicked : TangemPayAnalyticsEvents(
|
||||||
categoryName = "Visa Onboarding",
|
categoryName = "Visa Onboarding",
|
||||||
event = "Button - Visa Get Card",
|
event = "Button - Visa Get Card",
|
||||||
)
|
)
|
||||||
|
|
||||||
data object KycFlowOpened : TangemPayAnalyticsEvents(
|
class KycFlowOpened : TangemPayAnalyticsEvents(
|
||||||
categoryName = "Visa Onboarding",
|
categoryName = "Visa Onboarding",
|
||||||
event = "Visa KYC Flow Opened",
|
event = "Visa KYC Flow Opened",
|
||||||
)
|
)
|
||||||
|
|
||||||
data object IssuingBannerDisplayed : TangemPayAnalyticsEvents(
|
class IssuingBannerDisplayed : TangemPayAnalyticsEvents(
|
||||||
categoryName = "Visa Onboarding",
|
categoryName = "Visa Onboarding",
|
||||||
event = "Visa Issuing Banner Displayed",
|
event = "Visa Issuing Banner Displayed",
|
||||||
)
|
)
|
||||||
|
|
||||||
data object MainScreenOpened : TangemPayAnalyticsEvents(
|
class MainScreenOpened : TangemPayAnalyticsEvents(
|
||||||
categoryName = "Visa Screen",
|
categoryName = "Visa Screen",
|
||||||
event = "Visa Main Screen Opened",
|
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",
|
categoryName = "Visa Screen",
|
||||||
event = "Button - Visa Receive",
|
event = "Button - Visa Receive",
|
||||||
)
|
)
|
||||||
|
|
||||||
data object SwapClicked : TangemPayAnalyticsEvents(
|
class SwapClicked : TangemPayAnalyticsEvents(
|
||||||
categoryName = "Visa Screen",
|
categoryName = "Visa Screen",
|
||||||
event = "Button - Visa Swap",
|
event = "Button - Visa Swap",
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ class DefaultKycModel @Inject constructor(
|
||||||
val uiState = _uiState.asStateFlow()
|
val uiState = _uiState.asStateFlow()
|
||||||
|
|
||||||
init {
|
init {
|
||||||
analytics.send(TangemPayAnalyticsEvents.KycFlowOpened)
|
analytics.send(TangemPayAnalyticsEvents.KycFlowOpened())
|
||||||
modelScope.launch {
|
modelScope.launch {
|
||||||
try {
|
try {
|
||||||
kycRepository.getKycStartInfo(params.userWalletId).getOrNull()?.let { _uiState.emit(it) }
|
kycRepository.getKycStartInfo(params.userWalletId).getOrNull()?.let { _uiState.emit(it) }
|
||||||
|
|
|
||||||
|
|
@ -101,6 +101,7 @@ internal class TangemPayDetailsModel @Inject constructor(
|
||||||
val bottomSheetNavigation: SlotNavigation<TangemPayDetailsNavigation> = SlotNavigation()
|
val bottomSheetNavigation: SlotNavigation<TangemPayDetailsNavigation> = SlotNavigation()
|
||||||
|
|
||||||
init {
|
init {
|
||||||
|
analytics.send(TangemPayAnalyticsEvents.MainScreenOpened())
|
||||||
handleBalanceHiding()
|
handleBalanceHiding()
|
||||||
fetchAddToWalletBanner()
|
fetchAddToWalletBanner()
|
||||||
fetchBalance()
|
fetchBalance()
|
||||||
|
|
@ -212,6 +213,7 @@ internal class TangemPayDetailsModel @Inject constructor(
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onClickAddFunds() {
|
override fun onClickAddFunds() {
|
||||||
|
analytics.send(TangemPayAnalyticsEvents.AddFundsClicked())
|
||||||
val currentBalance = balance
|
val currentBalance = balance
|
||||||
val depositAddress = currentBalance?.depositAddress
|
val depositAddress = currentBalance?.depositAddress
|
||||||
if (currentBalance == null || depositAddress == null) {
|
if (currentBalance == null || depositAddress == null) {
|
||||||
|
|
@ -352,7 +354,7 @@ internal class TangemPayDetailsModel @Inject constructor(
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onClickSwap(data: TangemPayTopUpData) {
|
override fun onClickSwap(data: TangemPayTopUpData) {
|
||||||
analytics.send(TangemPayAnalyticsEvents.SwapClicked)
|
analytics.send(TangemPayAnalyticsEvents.SwapClicked())
|
||||||
bottomSheetNavigation.dismiss()
|
bottomSheetNavigation.dismiss()
|
||||||
router.push(
|
router.push(
|
||||||
AppRoute.Swap(
|
AppRoute.Swap(
|
||||||
|
|
@ -371,7 +373,7 @@ internal class TangemPayDetailsModel @Inject constructor(
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onClickReceive(data: TangemPayTopUpData) {
|
override fun onClickReceive(data: TangemPayTopUpData) {
|
||||||
analytics.send(TangemPayAnalyticsEvents.ReceiveFundsClicked)
|
analytics.send(TangemPayAnalyticsEvents.ReceiveFundsClicked())
|
||||||
bottomSheetNavigation.dismiss()
|
bottomSheetNavigation.dismiss()
|
||||||
val config = TokenReceiveConfig(
|
val config = TokenReceiveConfig(
|
||||||
shouldShowWarning = false,
|
shouldShowWarning = false,
|
||||||
|
|
|
||||||
|
|
@ -234,7 +234,7 @@ internal object TangemPayTxHistoryDetailsConverter :
|
||||||
)
|
)
|
||||||
is TangemPayTxHistoryItem.Spend -> persistentListOf(
|
is TangemPayTxHistoryItem.Spend -> persistentListOf(
|
||||||
ButtonState(
|
ButtonState(
|
||||||
text = resourceReference(R.string.tangem_pay_dispute),
|
text = resourceReference(R.string.tangem_pay_get_help),
|
||||||
onClick = this.onDisputeClick,
|
onClick = this.onDisputeClick,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -50,7 +50,6 @@ internal class TangemPayOnboardingModel @Inject constructor(
|
||||||
field = MutableStateFlow(getInitialState())
|
field = MutableStateFlow(getInitialState())
|
||||||
|
|
||||||
init {
|
init {
|
||||||
analytics.send(TangemPayAnalyticsEvents.ActivationScreenOpened)
|
|
||||||
modelScope.launch {
|
modelScope.launch {
|
||||||
when (params) {
|
when (params) {
|
||||||
is TangemPayOnboardingComponent.Params.ContinueOnboarding -> {
|
is TangemPayOnboardingComponent.Params.ContinueOnboarding -> {
|
||||||
|
|
@ -66,6 +65,8 @@ internal class TangemPayOnboardingModel @Inject constructor(
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun showOnboarding() {
|
private fun showOnboarding() {
|
||||||
|
// TODO: move analytics to init block [REDACTED_JIRA]
|
||||||
|
analytics.send(TangemPayAnalyticsEvents.ActivationScreenOpened())
|
||||||
uiState.update {
|
uiState.update {
|
||||||
TangemPayOnboardingScreenState.Content(
|
TangemPayOnboardingScreenState.Content(
|
||||||
onBack = it.onBack,
|
onBack = it.onBack,
|
||||||
|
|
@ -118,12 +119,12 @@ internal class TangemPayOnboardingModel @Inject constructor(
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun onTermsClick() {
|
private fun onTermsClick() {
|
||||||
analytics.send(TangemPayAnalyticsEvents.ViewTermsClicked)
|
analytics.send(TangemPayAnalyticsEvents.ViewTermsClicked())
|
||||||
urlOpener.openUrl(TangemPayConstants.TERMS_AND_LIMITS_LINK)
|
urlOpener.openUrl(TangemPayConstants.TERMS_AND_LIMITS_LINK)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun onGetCardClick() {
|
private fun onGetCardClick() {
|
||||||
analytics.send(TangemPayAnalyticsEvents.GetCardClicked)
|
analytics.send(TangemPayAnalyticsEvents.GetCardClicked())
|
||||||
uiState.transformerUpdate(TangemPayOnboardingButtonLoadingTransformer(isLoading = true))
|
uiState.transformerUpdate(TangemPayOnboardingButtonLoadingTransformer(isLoading = true))
|
||||||
modelScope.launch {
|
modelScope.launch {
|
||||||
// TODO implement selector
|
// TODO implement selector
|
||||||
|
|
|
||||||
|
|
@ -27,8 +27,8 @@ internal class WalletTangemPayAnalyticsEventSender @Inject constructor(
|
||||||
val event = when {
|
val event = when {
|
||||||
customerInfo.orderStatus == OrderStatus.CANCELED -> return // ignore cancelled state on analytics
|
customerInfo.orderStatus == OrderStatus.CANCELED -> return // ignore cancelled state on analytics
|
||||||
!customerInfo.info.isKycApproved -> return // ignore kyc not approved state on analytics
|
!customerInfo.info.isKycApproved -> return // ignore kyc not approved state on analytics
|
||||||
cardInfo != null && productInstance != null -> TangemPayAnalyticsEvents.MainScreenOpened
|
cardInfo != null && productInstance != null -> return
|
||||||
else -> TangemPayAnalyticsEvents.IssuingBannerDisplayed
|
else -> TangemPayAnalyticsEvents.IssuingBannerDisplayed()
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sentEvents.add(event)) {
|
if (sentEvents.add(event)) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue