From 942114d48b0ea580476749615053e96354d0cf29 Mon Sep 17 00:00:00 2001 From: Tangem Date: Tue, 21 Jul 2026 07:50:29 -0700 Subject: [PATCH] Updated on 2026-08-14 --- .../tiers/select/TangemPaySelectPlanModel.kt | 18 ++++++++++++++---- .../tiers/select/TangemPaySelectPlanScreen.kt | 3 +++ .../tiers/select/TangemPaySelectPlanUM.kt | 1 + 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/tiers/select/TangemPaySelectPlanModel.kt b/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/tiers/select/TangemPaySelectPlanModel.kt index 02d8dc63cd..9d5c1f65dc 100644 --- a/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/tiers/select/TangemPaySelectPlanModel.kt +++ b/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/tiers/select/TangemPaySelectPlanModel.kt @@ -90,10 +90,15 @@ internal class TangemPaySelectPlanModel @Inject constructor( val tierId = transition.plan.tierId analytics.send(TangemPayAnalyticsEvents.Tiers.PlanSelectedClick(tierId)) - analytics.send(TangemPayAnalyticsEvents.Tiers.PlanChangeConfirmationScreenShowed(tierId)) - isConfirm = true - state.update { buildState() } + when (params.source) { + TangemPaySelectPlanSource.TIERS_ONBOARDING -> applyTransition(transition) + TangemPaySelectPlanSource.CHANGE_PLAN -> { + analytics.send(TangemPayAnalyticsEvents.Tiers.PlanChangeConfirmationScreenShowed(tierId)) + isConfirm = true + state.update { buildState() } + } + } } private fun onComparePlansClick() { @@ -125,9 +130,13 @@ internal class TangemPaySelectPlanModel @Inject constructor( } private fun onConfirmClick() { + val transition = allowedTransitions.getOrNull(selectedIndex) ?: return + applyTransition(transition) + } + + private fun applyTransition(transition: TangemPayTariffPlanTransition) { if (isProcessing) return - val transition = allowedTransitions.getOrNull(selectedIndex) ?: return if (transition.type == TangemPayTariffPlanTransition.Type.UPGRADE) { analytics.send(TangemPayAnalyticsEvents.Tiers.PlanChangeUpgradeClicked()) } @@ -193,6 +202,7 @@ internal class TangemPaySelectPlanModel @Inject constructor( ) private fun buildSelectContent() = TangemPaySelectPlanUM.Content.Select( + isProcessing = isProcessing, onComparePlansClick = ::onComparePlansClick, onSelectClick = ::onSelectClick, ) diff --git a/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/tiers/select/TangemPaySelectPlanScreen.kt b/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/tiers/select/TangemPaySelectPlanScreen.kt index 8827a9d780..f50c507a48 100644 --- a/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/tiers/select/TangemPaySelectPlanScreen.kt +++ b/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/tiers/select/TangemPaySelectPlanScreen.kt @@ -229,6 +229,7 @@ private fun SelectFooter(content: TangemPaySelectPlanUM.Content.Select, modifier size = TangemButton.Size.X12, text = resourceReference(R.string.tangempay_select_plan_compare), onClick = content.onComparePlansClick, + isEnabled = !content.isProcessing, ) TangemButton( modifier = Modifier.fillMaxWidth(), @@ -236,6 +237,7 @@ private fun SelectFooter(content: TangemPaySelectPlanUM.Content.Select, modifier size = TangemButton.Size.X12, text = resourceReference(R.string.tangempay_select_plan_btn_select), onClick = content.onSelectClick, + isLoading = content.isProcessing, ) } } @@ -350,6 +352,7 @@ private fun previewState(isConfirm: Boolean) = TangemPaySelectPlanUM( ) } else { TangemPaySelectPlanUM.Content.Select( + isProcessing = false, onComparePlansClick = {}, onSelectClick = {}, ) diff --git a/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/tiers/select/TangemPaySelectPlanUM.kt b/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/tiers/select/TangemPaySelectPlanUM.kt index a4b43ff274..89a52c7cac 100644 --- a/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/tiers/select/TangemPaySelectPlanUM.kt +++ b/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/tiers/select/TangemPaySelectPlanUM.kt @@ -46,6 +46,7 @@ internal data class TangemPaySelectPlanUM( sealed interface Content { data class Select( + val isProcessing: Boolean, val onComparePlansClick: () -> Unit, val onSelectClick: () -> Unit, ) : Content