Updated on 2026-08-14
This commit is contained in:
parent
e50d2d9452
commit
642937b819
7 changed files with 55 additions and 46 deletions
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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(
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
),
|
),
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
),
|
),
|
||||||
|
|
|
||||||
|
|
@ -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 {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue