Updated on 2026-08-14

This commit is contained in:
Tangem 2026-07-15 17:28:02 +05:00
parent bd13529d69
commit 0bd23be25f
3 changed files with 17 additions and 5 deletions

View file

@ -298,10 +298,12 @@ internal interface TangemPayDataModule {
fun provideCreateVirtualAccountOrderUseCase( fun provideCreateVirtualAccountOrderUseCase(
onboardingRepository: OnboardingRepository, onboardingRepository: OnboardingRepository,
pollingUseCase: StartTangemPayOrderPollingUseCase, pollingUseCase: StartTangemPayOrderPollingUseCase,
appCoroutineScope: AppCoroutineScope,
): CreateVirtualAccountOrderUseCase { ): CreateVirtualAccountOrderUseCase {
return CreateVirtualAccountOrderUseCase( return CreateVirtualAccountOrderUseCase(
onboardingRepository = onboardingRepository, onboardingRepository = onboardingRepository,
pollingUseCase = pollingUseCase, pollingUseCase = pollingUseCase,
appCoroutineScope = appCoroutineScope,
) )
} }
} }

View file

@ -7,6 +7,8 @@ import com.tangem.domain.pay.model.OrderStatus
import com.tangem.domain.pay.model.TangemPayOrderInfo import com.tangem.domain.pay.model.TangemPayOrderInfo
import com.tangem.domain.pay.repository.OnboardingRepository import com.tangem.domain.pay.repository.OnboardingRepository
import com.tangem.domain.visa.error.VisaApiError import com.tangem.domain.visa.error.VisaApiError
import com.tangem.utils.coroutines.AppCoroutineScope
import kotlinx.coroutines.launch
import java.util.UUID import java.util.UUID
/** /**
@ -20,6 +22,7 @@ import java.util.UUID
class CreateVirtualAccountOrderUseCase( class CreateVirtualAccountOrderUseCase(
private val onboardingRepository: OnboardingRepository, private val onboardingRepository: OnboardingRepository,
private val pollingUseCase: StartTangemPayOrderPollingUseCase, private val pollingUseCase: StartTangemPayOrderPollingUseCase,
private val appCoroutineScope: AppCoroutineScope,
) { ) {
suspend operator fun invoke( suspend operator fun invoke(
userWalletId: UserWalletId, userWalletId: UserWalletId,
@ -33,6 +36,7 @@ class CreateVirtualAccountOrderUseCase(
idempotencyKey = UUID.randomUUID().toString(), idempotencyKey = UUID.randomUUID().toString(),
).bind() ).bind()
onboardingRepository.storeVirtualAccountOrderId(userWalletId = userWalletId, vaOrderId = vaOrderId) onboardingRepository.storeVirtualAccountOrderId(userWalletId = userWalletId, vaOrderId = vaOrderId)
appCoroutineScope.launch {
pollingUseCase.invoke( pollingUseCase.invoke(
order = TangemPayOrderInfo(orderId = vaOrderId, orderStatus = OrderStatus.NEW), order = TangemPayOrderInfo(orderId = vaOrderId, orderStatus = OrderStatus.NEW),
userWalletId = userWalletId, userWalletId = userWalletId,
@ -40,3 +44,4 @@ class CreateVirtualAccountOrderUseCase(
} }
} }
} }
}

View file

@ -6,6 +6,7 @@ import com.google.common.truth.Truth.assertThat
import com.tangem.domain.models.wallet.UserWalletId import com.tangem.domain.models.wallet.UserWalletId
import com.tangem.domain.pay.repository.OnboardingRepository import com.tangem.domain.pay.repository.OnboardingRepository
import com.tangem.domain.visa.error.VisaApiError import com.tangem.domain.visa.error.VisaApiError
import com.tangem.test.core.TestAppCoroutineScope
import io.mockk.coEvery import io.mockk.coEvery
import io.mockk.coVerify import io.mockk.coVerify
import io.mockk.mockk import io.mockk.mockk
@ -16,7 +17,11 @@ internal class CreateVirtualAccountOrderUseCaseTest {
private val onboardingRepository: OnboardingRepository = mockk(relaxUnitFun = true) private val onboardingRepository: OnboardingRepository = mockk(relaxUnitFun = true)
private val pollingUseCase: StartTangemPayOrderPollingUseCase = mockk(relaxed = true) private val pollingUseCase: StartTangemPayOrderPollingUseCase = mockk(relaxed = true)
private val useCase = CreateVirtualAccountOrderUseCase(onboardingRepository, pollingUseCase) private val useCase = CreateVirtualAccountOrderUseCase(
onboardingRepository = onboardingRepository,
pollingUseCase = pollingUseCase,
appCoroutineScope = TestAppCoroutineScope(),
)
private val userWalletId = UserWalletId("1234567890ABCDEF") private val userWalletId = UserWalletId("1234567890ABCDEF")
private val paymentAccountAddress = "0xcollateral" private val paymentAccountAddress = "0xcollateral"