Updated on 2026-08-14
This commit is contained in:
parent
d9cf8d5aef
commit
0c7586106e
17 changed files with 491 additions and 15 deletions
|
|
@ -34,6 +34,7 @@ dependencies {
|
|||
|
||||
/** Project - Domain */
|
||||
implementation(projects.domain.visa)
|
||||
implementation(projects.domain.virtualAccount)
|
||||
implementation(projects.domain.card)
|
||||
implementation(projects.domain.wallets)
|
||||
implementation(projects.domain.legacy)
|
||||
|
|
|
|||
|
|
@ -1,17 +1,17 @@
|
|||
package com.tangem.data.pay
|
||||
|
||||
import com.tangem.common.card.FirmwareVersion
|
||||
import com.tangem.domain.common.wallets.UserWalletsListRepository
|
||||
import com.tangem.domain.models.pay.TangemPayEligibilityType
|
||||
import com.tangem.domain.models.pay.isTangemPayType
|
||||
import com.tangem.utils.coroutines.AppCoroutineScope
|
||||
import com.tangem.domain.models.wallet.UserWallet
|
||||
import com.tangem.domain.models.wallet.UserWalletId
|
||||
import com.tangem.domain.models.wallet.isLocked
|
||||
import com.tangem.domain.models.wallet.isMultiCurrency
|
||||
import com.tangem.domain.models.wallet.isTangemPayCompatible
|
||||
import com.tangem.domain.pay.TangemPayEligibilityManager
|
||||
import com.tangem.domain.pay.model.TangemPayEntryPoint
|
||||
import com.tangem.domain.pay.repository.OnboardingRepository
|
||||
import com.tangem.hot.sdk.model.HotWalletId
|
||||
import kotlinx.coroutines.*
|
||||
import kotlinx.coroutines.flow.collectLatest
|
||||
import kotlinx.coroutines.sync.Mutex
|
||||
|
|
@ -85,7 +85,7 @@ internal class DefaultTangemPayEligibilityManager @Inject constructor(
|
|||
val wallets = userWalletsListRepository.userWallets.value ?: return emptyList()
|
||||
|
||||
val candidates = wallets.filter { wallet ->
|
||||
wallet.isMultiCurrency && !wallet.isLocked && wallet.isCompatible() &&
|
||||
wallet.isMultiCurrency && !wallet.isLocked && wallet.isTangemPayCompatible &&
|
||||
!onboardingRepository.isTangemPayDeactivated(wallet.walletId)
|
||||
}
|
||||
|
||||
|
|
@ -98,11 +98,6 @@ internal class DefaultTangemPayEligibilityManager @Inject constructor(
|
|||
return candidates
|
||||
}
|
||||
|
||||
private fun UserWallet.isCompatible(): Boolean = when (this) {
|
||||
is UserWallet.Cold -> scanResponse.card.firmwareVersion >= FirmwareVersion.HDWalletAvailable
|
||||
is UserWallet.Hot -> hotWalletId.authType != HotWalletId.AuthType.NoPassword
|
||||
}
|
||||
|
||||
private suspend fun List<UserWallet>.addPaeraCustomersData(): List<UserWalletData> {
|
||||
if (isEmpty()) return emptyList()
|
||||
|
||||
|
|
@ -139,7 +134,7 @@ internal class DefaultTangemPayEligibilityManager @Inject constructor(
|
|||
onboardingRepository.checkCustomerEligibility()
|
||||
}
|
||||
return if (entryPoint == null) {
|
||||
eligibility.isNotEmpty()
|
||||
eligibility.any { it.isTangemPayType }
|
||||
} else {
|
||||
eligibility.any { it == entryPoint.toEligibilityType() }
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,8 +18,13 @@ import com.tangem.datasource.utils.mapWithStringKeyTypes
|
|||
import com.tangem.domain.virtualaccount.flow.VirtualAccountStatusFetcher
|
||||
import com.tangem.domain.virtualaccount.flow.VirtualAccountStatusProducer
|
||||
import com.tangem.domain.virtualaccount.flow.VirtualAccountStatusSupplier
|
||||
import com.tangem.domain.common.wallets.UserWalletsListRepository
|
||||
import com.tangem.domain.pay.repository.OnboardingRepository
|
||||
import com.tangem.domain.virtualaccount.repository.VirtualAccountActivationRepository
|
||||
import com.tangem.domain.virtualaccount.usecase.ActivateVirtualAccountUseCase
|
||||
import com.tangem.domain.virtualaccount.usecase.GetVirtualAccountEligibilityUseCase
|
||||
import com.tangem.domain.virtualaccount.usecase.GetVirtualAccountSuitableWalletsUseCase
|
||||
import com.tangem.security.DeviceSecurityInfoProvider
|
||||
import com.tangem.utils.coroutines.AppCoroutineScope
|
||||
import dagger.Binds
|
||||
import dagger.Module
|
||||
|
|
@ -94,5 +99,26 @@ internal interface VirtualAccountDataModule {
|
|||
): ActivateVirtualAccountUseCase {
|
||||
return ActivateVirtualAccountUseCase(repository = repository)
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
fun provideGetVirtualAccountSuitableWalletsUseCase(
|
||||
userWalletsListRepository: UserWalletsListRepository,
|
||||
): GetVirtualAccountSuitableWalletsUseCase {
|
||||
return GetVirtualAccountSuitableWalletsUseCase(userWalletsListRepository = userWalletsListRepository)
|
||||
}
|
||||
|
||||
@Provides
|
||||
fun provideGetVirtualAccountEligibilityUseCase(
|
||||
getVirtualAccountSuitableWalletsUseCase: GetVirtualAccountSuitableWalletsUseCase,
|
||||
onboardingRepository: OnboardingRepository,
|
||||
deviceSecurityInfoProvider: DeviceSecurityInfoProvider,
|
||||
): GetVirtualAccountEligibilityUseCase {
|
||||
return GetVirtualAccountEligibilityUseCase(
|
||||
getVirtualAccountSuitableWalletsUseCase = getVirtualAccountSuitableWalletsUseCase,
|
||||
onboardingRepository = onboardingRepository,
|
||||
deviceSecurityInfoProvider = deviceSecurityInfoProvider,
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue