From 54052fe9d006ba83f4752bfa6cf80b94e2b0eff7 Mon Sep 17 00:00:00 2001 From: Tangem Date: Thu, 11 Dec 2025 08:44:09 +0100 Subject: [PATCH] Updated on 2026-08-14 --- .../factory/OnrampOffersStateFactory.kt | 2 +- .../factory/OnrampV2AmountStateFactory.kt | 7 +++++- .../model/OnrampV2MainComponentModel.kt | 25 ++++++++++++++++--- 3 files changed, 29 insertions(+), 5 deletions(-) diff --git a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/mainv2/entity/factory/OnrampOffersStateFactory.kt b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/mainv2/entity/factory/OnrampOffersStateFactory.kt index 60b8cc3570..c16f800f59 100644 --- a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/mainv2/entity/factory/OnrampOffersStateFactory.kt +++ b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/mainv2/entity/factory/OnrampOffersStateFactory.kt @@ -19,7 +19,7 @@ internal class OnrampOffersStateFactory( return when (currentState) { is OnrampV2MainComponentUM.InitialLoading -> currentState is OnrampV2MainComponentUM.Content -> { - if (currentState.offersBlockState is OnrampOffersBlockUM.Loading && offers.isEmpty()) { + if (currentState.offersBlockState is OnrampOffersBlockUM.Loading) { return currentState } currentState.copy( diff --git a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/mainv2/entity/factory/OnrampV2AmountStateFactory.kt b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/mainv2/entity/factory/OnrampV2AmountStateFactory.kt index 499cb56a88..5e4d4022dd 100644 --- a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/mainv2/entity/factory/OnrampV2AmountStateFactory.kt +++ b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/mainv2/entity/factory/OnrampV2AmountStateFactory.kt @@ -64,7 +64,11 @@ internal class OnrampV2AmountStateFactory( currencySymbol = currency.unit, onAmountValueChanged = onrampIntents::onAmountValueChanged, ), - offersBlockState = OnrampOffersBlockUM.Loading, + offersBlockState = if (amountState.amountFieldModel.fiatValue.isEmpty()) { + OnrampOffersBlockUM.Empty + } else { + OnrampOffersBlockUM.Loading + }, ) } @@ -98,6 +102,7 @@ internal class OnrampV2AmountStateFactory( amountBlockState = amountState.copy(secondaryFieldModel = OnrampSecondaryFieldErrorUM.Empty), onrampAmountButtonUMState = OnrampV2AmountButtonUMState.None, errorNotification = null, + offersBlockState = currentState.offersBlockState, ) } diff --git a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/mainv2/model/OnrampV2MainComponentModel.kt b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/mainv2/model/OnrampV2MainComponentModel.kt index 1fc8da3ee7..4efed551f6 100644 --- a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/mainv2/model/OnrampV2MainComponentModel.kt +++ b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/mainv2/model/OnrampV2MainComponentModel.kt @@ -236,8 +236,17 @@ internal class OnrampV2MainComponentModel @Inject constructor( maybeOffers.fold( ifLeft = ::handleOnrampError, ifRight = { offers -> - if (offers.isNotEmpty()) { - state.update { onrampOffersStateFactory.getOffersState(offers) } + val currentState = state.value + if (currentState is OnrampV2MainComponentUM.Content) { + if (currentState.amountBlockState.amountFieldModel.fiatValue.isEmpty()) { + state.update { + currentState.copy(offersBlockState = OnrampOffersBlockUM.Empty) + } + return@fold + } + state.update { + onrampOffersStateFactory.getOffersState(offers) + } } }, ) @@ -301,7 +310,17 @@ internal class OnrampV2MainComponentModel @Inject constructor( state.update { stateFactory.getErrorState(onRefresh = ::onRetryQuotes) } } else -> { - state.update { amountStateFactory.getAmountSecondaryFieldResetState() } + state.update { prevState -> + val resetState = amountStateFactory.getAmountSecondaryFieldResetState() + if (prevState is OnrampV2MainComponentUM.Content && + resetState is OnrampV2MainComponentUM.Content && + prevState.offersBlockState is OnrampOffersBlockUM.Loading + ) { + resetState.copy(offersBlockState = OnrampOffersBlockUM.Empty) + } else { + resetState + } + } } } }