Updated on 2026-08-14

This commit is contained in:
Tangem 2026-07-09 14:17:55 +05:00
parent e50d2d9452
commit 642937b819
7 changed files with 55 additions and 46 deletions

View file

@ -127,7 +127,6 @@ internal class DefaultPaymentAccountStatusFetcherTest {
availableForWithdrawal = BigDecimal.TEN, availableForWithdrawal = BigDecimal.TEN,
cards = listOf(cardInfo), cards = listOf(cardInfo),
productInstances = productInstances, productInstances = productInstances,
tariffPlan = null,
) )
@BeforeEach @BeforeEach

View file

@ -62,7 +62,7 @@ import kotlinx.coroutines.launch
import java.math.BigDecimal import java.math.BigDecimal
import javax.inject.Inject import javax.inject.Inject
@Suppress("LongParameterList", "LargeClass") @Suppress("LongParameterList", "LargeClass", "TooManyFunctions")
@Stable @Stable
@ModelScoped @ModelScoped
internal class TangemPayDetailsModel @Inject constructor( internal class TangemPayDetailsModel @Inject constructor(

View file

@ -1,6 +1,8 @@
package com.tangem.features.tangempay.utils package com.tangem.features.tangempay.utils
import com.tangem.core.ui.extensions.resourceReference
import com.tangem.domain.models.account.BankCredentials import com.tangem.domain.models.account.BankCredentials
import com.tangem.features.tangempay.details.impl.R
import com.tangem.features.virtualaccount.details.component.VirtualAccountAddFundsBottomSheetComponent.RequisitesRow import com.tangem.features.virtualaccount.details.component.VirtualAccountAddFundsBottomSheetComponent.RequisitesRow
/** /**
@ -16,22 +18,32 @@ internal const val VA_DAILY_DEPOSIT_LIMIT_PLACEHOLDER = "$10,000"
*/ */
internal fun BankCredentials.toRequisitesRows(): List<RequisitesRow> = listOf( internal fun BankCredentials.toRequisitesRows(): List<RequisitesRow> = listOf(
RequisitesRow( RequisitesRow(
title = "Beneficiary name and address", title = resourceReference(R.string.virtual_account_requisites_beneficiary_name),
titleForShare = "Beneficiary name and address", titleForShare = "Beneficiary name",
value = "$beneficiaryName\n$beneficiaryAddress", value = beneficiaryName,
), ),
RequisitesRow( RequisitesRow(
title = "Bank name and address", title = resourceReference(R.string.virtual_account_requisites_beneficiary_address),
titleForShare = "Bank name and address", titleForShare = "Beneficiary address",
value = "$beneficiaryBankName\n$beneficiaryBankAddress", value = beneficiaryBankAddress,
), ),
RequisitesRow( RequisitesRow(
title = "Account number", title = resourceReference(R.string.virtual_account_requisites_bank_name),
titleForShare = "Bank name",
value = beneficiaryBankName,
),
RequisitesRow(
title = resourceReference(R.string.virtual_account_requisites_bank_address),
titleForShare = "Bank address",
value = beneficiaryBankAddress,
),
RequisitesRow(
title = resourceReference(R.string.virtual_account_requisites_account_number),
titleForShare = "Account number", titleForShare = "Account number",
value = accountNumber, value = accountNumber,
), ),
RequisitesRow( RequisitesRow(
title = "Routing number", title = resourceReference(R.string.virtual_account_requisites_routing_number),
titleForShare = "Routing number", titleForShare = "Routing number",
value = routingNumber, value = routingNumber,
), ),

View file

@ -2,6 +2,7 @@ package com.tangem.features.virtualaccount.details.component
import com.tangem.core.decompose.factory.ComponentFactory import com.tangem.core.decompose.factory.ComponentFactory
import com.tangem.core.ui.decompose.ComposableBottomSheetComponent import com.tangem.core.ui.decompose.ComposableBottomSheetComponent
import com.tangem.core.ui.extensions.TextReference
import com.tangem.domain.models.wallet.UserWalletId import com.tangem.domain.models.wallet.UserWalletId
/** /**
@ -25,7 +26,7 @@ interface VirtualAccountAddFundsBottomSheetComponent : ComposableBottomSheetComp
) )
data class RequisitesRow( data class RequisitesRow(
val title: String, val title: TextReference,
val titleForShare: String, val titleForShare: String,
val value: String, val value: String,
) )

View file

@ -16,8 +16,7 @@ import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import com.tangem.core.ui.components.text.applyBladeBrush import com.tangem.core.ui.components.text.applyBladeBrush
import com.tangem.core.ui.ds2.shimmers.TextShimmer import com.tangem.core.ui.ds2.shimmers.TangemShimmer
import com.tangem.core.ui.ds2.shimmers.TextShimmerStyle
import com.tangem.core.ui.extensions.* import com.tangem.core.ui.extensions.*
import com.tangem.core.ui.res.TangemTheme import com.tangem.core.ui.res.TangemTheme
import com.tangem.core.ui.res.TangemThemePreviewRedesign import com.tangem.core.ui.res.TangemThemePreviewRedesign
@ -44,11 +43,9 @@ fun TangemBalanceHeader(
}, },
) { animatedState -> ) { animatedState ->
when (animatedState) { when (animatedState) {
is TangemBalanceHeaderState.Loading -> TextShimmer( is TangemBalanceHeaderState.Loading -> TangemShimmer(
modifier = Modifier.size(width = 160.dp, height = 56.dp), modifier = Modifier.size(width = 160.dp, height = 56.dp),
text = "1234.00", style = TangemTheme.typography3.heading.medium,
style = TextShimmerStyle.HEADING_MEDIUM,
radius = TangemTheme.dimens2.x25,
) )
is TangemBalanceHeaderState.Content -> Text( is TangemBalanceHeaderState.Content -> Text(
modifier = balanceModifier, modifier = balanceModifier,

View file

@ -57,22 +57,17 @@ internal class VirtualAccountMainModel @Inject constructor(
private fun buildRequisites(details: VirtualAccountDepositDetails) = listOf( private fun buildRequisites(details: VirtualAccountDepositDetails) = listOf(
VirtualAccountAddFundsBottomSheetComponent.RequisitesRow( VirtualAccountAddFundsBottomSheetComponent.RequisitesRow(
title = "Beneficiary name and address", title = resourceReference(R.string.virtual_account_requisites_beneficiary_name),
titleForShare = "Beneficiary name and address", titleForShare = "Beneficiary name",
value = "${details.beneficiaryName}\n${details.beneficiaryAddress}", value = details.beneficiaryName,
), ),
VirtualAccountAddFundsBottomSheetComponent.RequisitesRow( VirtualAccountAddFundsBottomSheetComponent.RequisitesRow(
title = "Bank name and address", title = resourceReference(R.string.virtual_account_requisites_account_number),
titleForShare = "Bank name and address",
value = "${details.bankName}\n${details.bankAddress}",
),
VirtualAccountAddFundsBottomSheetComponent.RequisitesRow(
title = "Account number",
titleForShare = "Account number", titleForShare = "Account number",
value = details.accountNumber, value = details.accountNumber,
), ),
VirtualAccountAddFundsBottomSheetComponent.RequisitesRow( VirtualAccountAddFundsBottomSheetComponent.RequisitesRow(
title = "Routing number", title = resourceReference(R.string.virtual_account_requisites_routing_number),
titleForShare = "Routing number", titleForShare = "Routing number",
value = details.routingNumber, value = details.routingNumber,
), ),

View file

@ -7,7 +7,6 @@ import com.tangem.core.decompose.model.Model
import com.tangem.core.decompose.model.ParamsContainer import com.tangem.core.decompose.model.ParamsContainer
import com.tangem.core.navigation.share.ShareManager import com.tangem.core.navigation.share.ShareManager
import com.tangem.core.ui.clipboard.ClipboardManager import com.tangem.core.ui.clipboard.ClipboardManager
import com.tangem.core.ui.extensions.stringReference
import com.tangem.features.virtualaccount.details.component.VirtualAccountAddFundsBottomSheetComponent import com.tangem.features.virtualaccount.details.component.VirtualAccountAddFundsBottomSheetComponent
import com.tangem.utils.coroutines.CoroutineDispatcherProvider import com.tangem.utils.coroutines.CoroutineDispatcherProvider
import kotlinx.collections.immutable.toImmutableList import kotlinx.collections.immutable.toImmutableList
@ -55,25 +54,31 @@ internal class VirtualAccountAddFundsModel @Inject constructor(
uiState.update { state -> state.copy(content = buildDetailsContent()) } uiState.update { state -> state.copy(content = buildDetailsContent()) }
} }
private fun buildDetailsContent() = VirtualAccountAddFundsUM.Content.Details( private fun buildDetailsContent(): VirtualAccountAddFundsUM.Content.Details {
items = params.requisites return VirtualAccountAddFundsUM.Content.Details(
.map { detailItem(label = it.title, value = it.value) } items = params.requisites
.toImmutableList(), .map(::detailItem)
dailyLimit = params.dailyDepositLimit, .toImmutableList(),
onShareClick = { dailyLimit = params.dailyDepositLimit,
params.onShareClicked() onShareClick = {
shareManager.shareText(buildShareText()) params.onShareClicked()
}, shareManager.shareText(buildShareText())
) },
)
}
private fun detailItem(label: String, value: String) = VirtualAccountAddFundsUM.DetailItem( private fun detailItem(
label = stringReference(label), requisitesRow: VirtualAccountAddFundsBottomSheetComponent.RequisitesRow,
value = value, ): VirtualAccountAddFundsUM.DetailItem {
onCopyClick = { return VirtualAccountAddFundsUM.DetailItem(
params.onFieldCopied(label) label = requisitesRow.title,
clipboardManager.setText(text = value, isSensitive = true) value = requisitesRow.value,
}, onCopyClick = {
) params.onFieldCopied(requisitesRow.titleForShare)
clipboardManager.setText(text = requisitesRow.value, isSensitive = true)
},
)
}
private fun buildShareText(): String { private fun buildShareText(): String {
return buildString { return buildString {