Updated on 2026-08-14
This commit is contained in:
parent
922b197172
commit
9df23bfa67
4 changed files with 36 additions and 1 deletions
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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<VisaApiError, Boolean> {
|
||||
val hasTangemPay = tangemPayStorage.checkCustomerWalletResult(userWalletId)
|
||||
if (hasTangemPay != null) {
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
)
|
||||
}
|
||||
|
|
@ -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) }
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue