Updated on 2026-08-14

This commit is contained in:
Tangem 2026-07-10 08:10:29 -07:00
parent 4f1710d77c
commit 5440a3067d
16 changed files with 80 additions and 0 deletions

View file

@ -182,6 +182,7 @@ internal class ChooseTokenListItemConverter(
val paymentCurrency: CryptoCurrencyStatus = when (val status = this.value) {
is PaymentAccountStatusValue.Error,
is PaymentAccountStatusValue.IssuingCard,
is PaymentAccountStatusValue.AwaitingPlanSelection,
PaymentAccountStatusValue.NotCreated,
is PaymentAccountStatusValue.UnderReview,
PaymentAccountStatusValue.Loading,

View file

@ -8,6 +8,7 @@ sealed class TangemPayMainUM {
data object Empty : TangemPayMainUM()
data object Loading : TangemPayMainUM()
data class SelectPlan(val onClick: () -> Unit) : TangemPayMainUM()
data class UnderReview(val subtitle: TextReference, val onClick: () -> Unit) : TangemPayMainUM()
data class IssuingCard(val onClick: () -> Unit) : TangemPayMainUM()
data class FailedToIssue(val onClick: () -> Unit) : TangemPayMainUM()

View file

@ -50,6 +50,11 @@ internal fun TangemPayMainBlockContent(
when (state) {
is TangemPayMainUM.Empty -> Unit
is TangemPayMainUM.Loading -> TangemPayMainLoading(modifier)
is TangemPayMainUM.SelectPlan -> TangemPayStateRow(
subtitle = resourceReference(R.string.tangempay_main_select_plan),
modifier = modifier,
onClick = state.onClick,
)
is TangemPayMainUM.UnderReview -> TangemPayStateRow(
subtitle = state.subtitle,
modifier = modifier,
@ -303,6 +308,7 @@ private class TangemPayMainBlockContentPreviewParameterProvider : CollectionPrev
TangemPayMainUM.ExposedDevice,
TangemPayMainUM.FailedToIssue(onClick = {}),
TangemPayMainUM.UnderReview(subtitle = resourceReference(R.string.tangempay_kyc_in_progress), onClick = {}),
TangemPayMainUM.SelectPlan(onClick = {}),
TangemPayMainUM.IssuingCard(onClick = {}),
TangemPayMainUM.Content(
subtitle = TextReference.Str("*1234"),

View file

@ -42,6 +42,7 @@ internal fun TangemPayMainBlockItem(state: TangemPayMainUM, isBalanceHidden: Boo
when (state) {
is TangemPayMainUM.Empty -> Unit
is TangemPayMainUM.Loading -> TangemPayMainLoadingItem(modifier)
is TangemPayMainUM.SelectPlan -> TangemPayMainSelectPlanItem(state, modifier)
is TangemPayMainUM.UnderReview -> TangemPayMainUnderReviewItem(state, modifier)
is TangemPayMainUM.IssuingCard -> TangemPayMainIssuingCardItem(state, modifier)
is TangemPayMainUM.FailedToIssue -> TangemPayMainFailedIssueItem(state, modifier)
@ -194,6 +195,25 @@ private fun TangemPayMainTempUnavailableItem(modifier: Modifier = Modifier) {
}
}
@Composable
private fun TangemPayMainSelectPlanItem(state: TangemPayMainUM.SelectPlan, modifier: Modifier = Modifier) {
BlockCard(
modifier = modifier
.clip(RoundedCornerShape(size = TangemTheme.dimens.radius14))
.background(TangemTheme.colors.background.primary),
onClick = state.onClick,
) {
InputRowImageBase(
modifier = Modifier.padding(all = TangemTheme.dimens.spacing12),
subtitle = resourceReference(R.string.tangempay_payment_account),
caption = resourceReference(R.string.tangempay_main_select_plan),
subtitleColor = TangemTheme.colors.text.primary1,
captionColor = TangemTheme.colors.text.tertiary,
iconResWebp = R.drawable.img_visa_36,
)
}
}
@Composable
private fun TangemPayMainIssuingCardItem(state: TangemPayMainUM.IssuingCard, modifier: Modifier = Modifier) {
BlockCard(
@ -344,6 +364,7 @@ private class TangemPayMainUMPreviewParameterProvider : CollectionPreviewParamet
TangemPayMainUM.ExposedDevice,
TangemPayMainUM.FailedToIssue(onClick = {}),
TangemPayMainUM.UnderReview(subtitle = resourceReference(R.string.tangempay_kyc_in_progress), onClick = {}),
TangemPayMainUM.SelectPlan(onClick = {}),
TangemPayMainUM.IssuingCard(onClick = {}),
TangemPayMainUM.Content(
subtitle = TextReference.Str("*1234"),

View file

@ -42,6 +42,8 @@ internal interface TangemPayIntents {
fun openDetails(status: AccountStatus.Payment)
fun onSelectPlanClicked(status: AccountStatus.Payment)
fun onKycProgressClicked(userWalletId: UserWalletId)
fun onKycRejectedClicked(userWalletId: UserWalletId, customerId: String)
@ -114,6 +116,10 @@ internal class TangemPayClickIntentsImplementor @Inject constructor(
router.openTangemPayDetails(status = status)
}
override fun onSelectPlanClicked(status: AccountStatus.Payment) {
router.openTangemPaySelectPlan(status = status)
}
override fun onKycProgressClicked(userWalletId: UserWalletId) {
val cancelKycConfirmDialogMessage = DialogMessage(
title = resourceReference(R.string.tangempay_kyc_confirm_cancellation_alert_title),

View file

@ -158,6 +158,10 @@ internal class DefaultWalletRouter @Inject constructor(
router.push(AppRoute.TangemPayDetails(status = status))
}
override fun openTangemPaySelectPlan(status: AccountStatus.Payment) {
// TODO v_rodionov: [REDACTED_TASK_KEY] Tiers Onboarding - part 2
}
override fun openYieldSupplyBottomSheet(
cryptoCurrency: CryptoCurrency,
tokenAction: TokenAction,

View file

@ -84,6 +84,8 @@ internal interface InnerWalletRouter {
fun openTangemPayDetails(status: AccountStatus.Payment)
fun openTangemPaySelectPlan(status: AccountStatus.Payment)
/** Open BS abput yield supply active and all money deposited in AAVE */
fun openYieldSupplyBottomSheet(
cryptoCurrency: CryptoCurrency,

View file

@ -26,6 +26,7 @@ internal class WalletTangemPayAnalyticsEventSender @Inject constructor(
PaymentAccountStatusValue.Loading,
PaymentAccountStatusValue.NotCreated,
is PaymentAccountStatusValue.UnderReview,
is PaymentAccountStatusValue.AwaitingPlanSelection,
is PaymentAccountStatusValue.Deactivated,
-> return
}

View file

@ -236,6 +236,7 @@ internal class GetMultiWalletWarningsFactory @Inject constructor(
is PaymentAccountStatusValue.Error.CardIssueFailed,
is PaymentAccountStatusValue.Error.ExposedDevice,
is PaymentAccountStatusValue.IssuingCard,
is PaymentAccountStatusValue.AwaitingPlanSelection,
is PaymentAccountStatusValue.Loaded,
is PaymentAccountStatusValue.Loading,
is PaymentAccountStatusValue.UnderReview,

View file

@ -284,6 +284,7 @@ internal class GetWalletNotificationsFactory @Inject constructor(
is PaymentAccountStatusValue.Error.CardIssueFailed,
is PaymentAccountStatusValue.Error.ExposedDevice,
is PaymentAccountStatusValue.IssuingCard,
is PaymentAccountStatusValue.AwaitingPlanSelection,
is PaymentAccountStatusValue.Loaded,
is PaymentAccountStatusValue.Loading,
is PaymentAccountStatusValue.UnderReview,

View file

@ -35,6 +35,9 @@ internal class TangemPayMainBlockConverter(
is PaymentAccountStatusValue.IssuingCard -> TangemPayMainUM.IssuingCard(
onClick = { tangemPayClickIntents.onIssuingCardClicked() },
)
is PaymentAccountStatusValue.AwaitingPlanSelection -> TangemPayMainUM.SelectPlan(
onClick = { tangemPayClickIntents.onSelectPlanClicked(value) },
)
is PaymentAccountStatusValue.UnderReview -> TangemPayMainUM.UnderReview(
subtitle = when (statusValue.kycStatus) {
KycStatus.REJECTED -> TextReference.Res(R.string.tangempay_kyc_has_failed)