diff --git a/data/visa/build.gradle.kts b/data/visa/build.gradle.kts index 6443faf2f5..ef2ebc1613 100644 --- a/data/visa/build.gradle.kts +++ b/data/visa/build.gradle.kts @@ -15,6 +15,7 @@ android { dependencies { /** Project - Data */ + implementation(projects.core.analytics) implementation(projects.core.datasource) implementation(projects.core.error) implementation(projects.core.error.ext) diff --git a/data/visa/src/main/kotlin/com/tangem/data/pay/repository/DefaultOnboardingRepository.kt b/data/visa/src/main/kotlin/com/tangem/data/pay/repository/DefaultOnboardingRepository.kt index 042922e80a..b67a28e4e5 100644 --- a/data/visa/src/main/kotlin/com/tangem/data/pay/repository/DefaultOnboardingRepository.kt +++ b/data/visa/src/main/kotlin/com/tangem/data/pay/repository/DefaultOnboardingRepository.kt @@ -2,6 +2,7 @@ package com.tangem.data.pay.repository import arrow.core.Either import arrow.core.raise.catch +import com.tangem.core.analytics.api.AnalyticsEventHandler import com.tangem.datasource.api.pay.TangemPayApi import com.tangem.datasource.api.pay.models.request.DeeplinkValidityRequest import com.tangem.datasource.api.pay.models.request.OrderRequest @@ -18,6 +19,7 @@ import com.tangem.domain.pay.model.CustomerInfo import com.tangem.domain.pay.model.CustomerInfo.CardInfo import com.tangem.domain.pay.model.CustomerInfo.ProductInstance import com.tangem.domain.pay.repository.OnboardingRepository +import com.tangem.domain.tangempay.TangemPayAnalyticsEvents import com.tangem.domain.visa.error.VisaApiError import com.tangem.domain.visa.model.TangemPayCardFrozenState import com.tangem.utils.coroutines.CoroutineDispatcherProvider @@ -32,6 +34,7 @@ private const val TAG = "TangemPay: OnboardingRepository" @Suppress("LongParameterList") internal class DefaultOnboardingRepository @Inject constructor( + private val analytics: AnalyticsEventHandler, private val dispatcherProvider: CoroutineDispatcherProvider, private val tangemPayApi: TangemPayApi, private val requestHelper: TangemPayRequestPerformer, @@ -135,6 +138,9 @@ internal class DefaultOnboardingRepository @Inject constructor( userWalletId: UserWalletId, response: CustomerMeResponse.Result?, ): CustomerInfo { + val kycStatus = KycStatus.fromString(status = response?.kyc?.status) + sendKycAnalytics(kycStatus) + val card = response?.card val fiatBalance = response?.balance?.fiat val paymentAccount = response?.paymentAccount @@ -161,13 +167,24 @@ internal class DefaultOnboardingRepository @Inject constructor( return CustomerInfo( customerId = response?.id, productInstance = productInstance, - kycStatus = KycStatus.fromString(status = response?.kyc?.status), + kycStatus = kycStatus, cardInfo = cardInfo, ).also { lastFetchedCustomerInfoMap[userWalletId] = it } } + private fun sendKycAnalytics(kycStatus: KycStatus) { + val event = when (kycStatus) { + KycStatus.APPROVED -> TangemPayAnalyticsEvents.KycPassedAndOrderCreated() + KycStatus.REJECTED -> TangemPayAnalyticsEvents.KycRejected() + KycStatus.INIT, + KycStatus.PENDING, + -> return + } + analytics.send(event) + } + override suspend fun hasTangemPayInWallet(userWalletId: UserWalletId): Either { val hasTangemPay = tangemPayStorage.checkCustomerWalletResult(userWalletId) if (hasTangemPay != null) { diff --git a/domain/visa/src/main/kotlin/com/tangem/domain/tangempay/TangemPayAnalyticsEvents.kt b/domain/visa/src/main/kotlin/com/tangem/domain/tangempay/TangemPayAnalyticsEvents.kt index e4b6af4d70..b3de223ee0 100644 --- a/domain/visa/src/main/kotlin/com/tangem/domain/tangempay/TangemPayAnalyticsEvents.kt +++ b/domain/visa/src/main/kotlin/com/tangem/domain/tangempay/TangemPayAnalyticsEvents.kt @@ -176,4 +176,19 @@ sealed class TangemPayAnalyticsEvents( categoryName = "Visa Screen", event = "Button - Support On Transaction Popup", ) + + class KycPassedAndOrderCreated : TangemPayAnalyticsEvents( + categoryName = "Visa Onboarding", + event = "Visa KYC Passed And Order Created", + ) + + class KycRejected : TangemPayAnalyticsEvents( + categoryName = "Visa Onboarding", + event = "Visa KYC Rejected", + ) + + class KycCancelled : TangemPayAnalyticsEvents( + categoryName = "Visa Onboarding", + event = "Visa KYC Canceled", + ) } \ No newline at end of file diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/child/wallet/model/intents/TangemPayClickIntents.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/child/wallet/model/intents/TangemPayClickIntents.kt index 6fa2ff980b..0c3e58467e 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/child/wallet/model/intents/TangemPayClickIntents.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/child/wallet/model/intents/TangemPayClickIntents.kt @@ -25,6 +25,7 @@ import com.tangem.domain.pay.TangemPayEligibilityManager import com.tangem.domain.pay.repository.OnboardingRepository import com.tangem.domain.pay.usecase.ProduceTangemPayInitialDataUseCase import com.tangem.domain.pay.usecase.TangemPayMainScreenCustomerInfoUseCase +import com.tangem.domain.tangempay.TangemPayAnalyticsEvents import com.tangem.feature.wallet.presentation.wallet.state.WalletStateController import com.tangem.feature.wallet.presentation.wallet.state.model.WalletDialogConfig import com.tangem.feature.wallet.presentation.wallet.state.transformers.TangemPayHideOnboardingStateTransformer @@ -261,6 +262,7 @@ internal class TangemPayClickIntentsImplementor @Inject constructor( } private fun disableTangemPay(userWalletId: UserWalletId) { + analyticsEventHandler.send(TangemPayAnalyticsEvents.KycCancelled()) modelScope.launch { tangemPayOnboardingRepository.disableTangemPay(userWalletId) .onRight { tangemPayMainScreenCustomerInfoUseCase.fetch(userWalletId) }