Updated on 2026-08-14

This commit is contained in:
Tangem 2026-07-16 12:44:40 +05:00
parent 2c754243f5
commit a94f946a28
4 changed files with 12 additions and 1 deletions

View file

@ -20,6 +20,7 @@ dependencies {
implementation(projects.features.createWalletSelection.api)
implementation(projects.features.onboardingV2.api)
implementation(projects.features.addressBook.api)
implementation(projects.features.virtualAccounts.details.api)
/* Project - Core */
implementation(projects.core.decompose)

View file

@ -37,6 +37,7 @@ import com.tangem.features.details.entity.DetailsUM
import com.tangem.features.details.entity.SelectEmailFeedbackTypeBS
import com.tangem.features.details.utils.ItemsBuilder
import com.tangem.features.details.utils.SocialsBuilder
import com.tangem.features.virtualaccount.VirtualAccountFeatureToggles
import com.tangem.utils.coroutines.CoroutineDispatcherProvider
import com.tangem.utils.info.AppInfoProvider
import com.tangem.utils.logging.TangemLogger
@ -69,6 +70,7 @@ internal class DetailsModel @Inject constructor(
override val dispatchers: CoroutineDispatcherProvider,
private val generateBuyTangemCardLinkUseCase: GenerateBuyTangemCardLinkUseCase,
private val analyticsEventHandler: AnalyticsEventHandler,
private val virtualAccountFeatureToggles: VirtualAccountFeatureToggles,
private val tangemPayEligibilityManager: TangemPayEligibilityManager,
private val getVirtualAccountEligibilityUseCase: GetVirtualAccountEligibilityUseCase,
) : Model() {
@ -292,8 +294,9 @@ internal class DetailsModel @Inject constructor(
private fun addVirtualAccountItemIfEligible() {
modelScope.launch {
val isVirtualAccountEnabled = virtualAccountFeatureToggles.isVirtualAccountsEnabled
val eligibility = getVirtualAccountEligibilityUseCase(VirtualAccountEntryPoint.DETAILS)
if (eligibility is VirtualAccountEligibility.Available) {
if (eligibility is VirtualAccountEligibility.Available && isVirtualAccountEnabled) {
items.update { items ->
itemsBuilder.addVirtualAccountItem(
items = items,

View file

@ -23,6 +23,7 @@ import com.tangem.domain.wallets.usecase.GenerateBuyTangemCardLinkUseCase
import com.tangem.domain.wallets.usecase.GetSelectedWalletSyncUseCase
import com.tangem.domain.wallets.usecase.GetWalletsUseCase
import com.tangem.features.addressbook.AddressBookFeatureToggles
import com.tangem.features.virtualaccount.VirtualAccountFeatureToggles
import com.tangem.features.details.component.DetailsComponent
import com.tangem.features.details.entity.DetailsItemUM
import com.tangem.features.details.utils.ItemsBuilder
@ -64,6 +65,7 @@ internal abstract class DetailsModelTestBase {
protected val analyticsEventHandler: AnalyticsEventHandler = mockk(relaxUnitFun = true)
protected val tangemPayEligibilityManager: TangemPayEligibilityManager = mockk()
protected val getVirtualAccountEligibilityUseCase: GetVirtualAccountEligibilityUseCase = mockk()
protected val virtualAccountFeatureToggles: VirtualAccountFeatureToggles = mockk()
// Captured from itemsBuilder.buildAll(...) so the feature buttons can be driven.
protected val wcSlot = slot<Boolean>()
@ -90,6 +92,7 @@ internal abstract class DetailsModelTestBase {
every { appInfoProvider.appVersionCode } returns 456
coEvery { tangemPayEligibilityManager.getEligibleWallets(any(), any()) } returns emptyList()
coEvery { getVirtualAccountEligibilityUseCase(any()) } returns VirtualAccountEligibility.NotAvailable
every { virtualAccountFeatureToggles.isVirtualAccountsEnabled } returns true
every {
itemsBuilder.buildAll(
@ -132,6 +135,7 @@ internal abstract class DetailsModelTestBase {
analyticsEventHandler = analyticsEventHandler,
tangemPayEligibilityManager = tangemPayEligibilityManager,
getVirtualAccountEligibilityUseCase = getVirtualAccountEligibilityUseCase,
virtualAccountFeatureToggles = virtualAccountFeatureToggles,
)
protected fun stubBuildAllReturns(list: ImmutableList<DetailsItemUM>) {

View file

@ -5,8 +5,10 @@ import androidx.compose.foundation.Image
import androidx.compose.foundation.background
import androidx.compose.foundation.border
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.Icon
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
@ -110,6 +112,7 @@ private fun DetailsContent(content: VirtualAccountAddFundsUM.Content.Details, mo
Column(
modifier = modifier
.fillMaxWidth()
.verticalScroll(rememberScrollState())
.padding(bottom = TangemTheme.dimens2.x4),
) {
content.items.forEachIndexed { index, item ->