From 55b6b5796375b3e2aeb8c15e9e3a977f971f230b Mon Sep 17 00:00:00 2001 From: Tangem Date: Tue, 24 Feb 2026 19:37:46 +0300 Subject: [PATCH] Updated on 2026-08-14 --- .../swap/component/SwapFeeSelectorBlockComponent.kt | 10 +++++++++- .../java/com/tangem/feature/swap/model/SwapModel.kt | 13 +++++-------- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/features/swap/impl/src/main/java/com/tangem/feature/swap/component/SwapFeeSelectorBlockComponent.kt b/features/swap/impl/src/main/java/com/tangem/feature/swap/component/SwapFeeSelectorBlockComponent.kt index 19e1760238..96a5d81ee3 100644 --- a/features/swap/impl/src/main/java/com/tangem/feature/swap/component/SwapFeeSelectorBlockComponent.kt +++ b/features/swap/impl/src/main/java/com/tangem/feature/swap/component/SwapFeeSelectorBlockComponent.kt @@ -20,6 +20,7 @@ import dagger.assisted.Assisted import dagger.assisted.AssistedFactory import dagger.assisted.AssistedInject import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.SharedFlow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach @@ -55,7 +56,11 @@ class SwapFeeSelectorBlockComponent @AssistedInject constructor( init { params.repository.state - .onEach(feeSelectorBlockComponent::updateState) + .onEach { feeSelectorBlockComponent.updateState(it) } + .launchIn(componentScope) + + params.repository.forceUpdateState + .onEach { feeSelectorBlockComponent.updateState(it) } .launchIn(componentScope) } @@ -68,6 +73,9 @@ class SwapFeeSelectorBlockComponent @AssistedInject constructor( val state: StateFlow get() = MutableStateFlow(FeeSelectorUM.Loading) + val forceUpdateState: SharedFlow + get() = MutableStateFlow(FeeSelectorUM.Loading) + fun onResult(newState: FeeSelectorUM) suspend fun loadFee(): Either diff --git a/features/swap/impl/src/main/java/com/tangem/feature/swap/model/SwapModel.kt b/features/swap/impl/src/main/java/com/tangem/feature/swap/model/SwapModel.kt index 4f2656df25..38be62641a 100644 --- a/features/swap/impl/src/main/java/com/tangem/feature/swap/model/SwapModel.kt +++ b/features/swap/impl/src/main/java/com/tangem/feature/swap/model/SwapModel.kt @@ -2325,6 +2325,8 @@ internal class SwapModel @Inject constructor( FeeSelectorUM.Error(GetFeeError.UnknownError, isHidden = true), ) + override val forceUpdateState = MutableSharedFlow() + override suspend fun loadFeeExtended( selectedToken: CryptoCurrencyStatus?, ): Either { @@ -2357,18 +2359,13 @@ internal class SwapModel @Inject constructor( } override fun onResult(newState: FeeSelectorUM) { - if (isPermissionNotificationShown()) { - state.value = FeeSelectorUM.Error(GetFeeError.UnknownError, isHidden = true) - return - } - if (newState is FeeSelectorUM.Error) { - state.value = newState.copy(isHidden = true) + modelScope.launch { + forceUpdateState.emit(newState.copy(isHidden = true)) + } return } - state.value = newState - // If fee currency is same as from currency, we need to reload quotes to update fee info val isFeeCurrencySameAsFromCurrency = newState is FeeSelectorUM.Content && dataState.fromCryptoCurrency?.currency?.id == newState.feeExtraInfo.feeCryptoCurrencyStatus.currency.id