From 0b32fcb92580bee99ea7d657927e524246ddd7a7 Mon Sep 17 00:00:00 2001 From: Tangem Date: Mon, 8 Apr 2024 11:30:31 +0500 Subject: [PATCH] Updated on 2026-08-14 --- .../send/impl/presentation/state/SendUiState.kt | 1 + .../presentation/state/fee/FeeStateFactory.kt | 16 +++++++++++++--- .../state/fee/SendFeeStateConverter.kt | 1 + .../state/previewdata/FeeStatePreviewData.kt | 1 + 4 files changed, 16 insertions(+), 3 deletions(-) diff --git a/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/state/SendUiState.kt b/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/state/SendUiState.kt index a4306da4f4..c8e1d05950 100644 --- a/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/state/SendUiState.kt +++ b/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/state/SendUiState.kt @@ -77,6 +77,7 @@ internal sealed class SendStates { val rate: BigDecimal?, val appCurrency: AppCurrency, val isFeeApproximate: Boolean, + val isCustomSelected: Boolean, val notifications: ImmutableList, ) : SendStates() diff --git a/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/state/fee/FeeStateFactory.kt b/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/state/fee/FeeStateFactory.kt index 997c39d2f1..5ef07bb664 100644 --- a/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/state/fee/FeeStateFactory.kt +++ b/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/state/fee/FeeStateFactory.kt @@ -56,18 +56,26 @@ internal class FeeStateFactory( fun onFeeOnLoadedState(fees: TransactionFee): SendUiState { val state = currentStateProvider() val feeState = state.feeState ?: return state - val feeSelectorState = (feeState.feeSelectorState as? FeeSelectorState.Content)?.copy( + val feeSelectorState = feeState.feeSelectorState as? FeeSelectorState.Content + + val isCustomWasSelected = if (feeState.isCustomSelected) { + feeSelectorState?.customValues ?: persistentListOf() + } else { + customFeeFieldConverter.convert(fees.normal) + } + val updatedFeeSelectorState = feeSelectorState?.copy( fees = fees, + customValues = isCustomWasSelected, ) ?: FeeSelectorState.Content( fees = fees, customValues = customFeeFieldConverter.convert(fees.normal), ) - val fee = feeConverter.convert(feeSelectorState) + val fee = feeConverter.convert(updatedFeeSelectorState) return state.copy( amountState = state.amountState?.copy(isFeeLoading = false), feeState = feeState.copy( - feeSelectorState = feeSelectorState, + feeSelectorState = updatedFeeSelectorState, fee = fee, isFeeApproximate = isFeeApproximate(fee), ), @@ -91,9 +99,11 @@ internal class FeeStateFactory( val updatedFeeSelectorState = feeSelectorState.copy(selectedFee = feeType) val fee = feeConverter.convert(updatedFeeSelectorState) + val isCustomFeeWasSelected = feeState.isCustomSelected || updatedFeeSelectorState.selectedFee == FeeType.Custom return state.copy( feeState = feeState.copy( fee = fee, + isCustomSelected = isCustomFeeWasSelected, feeSelectorState = updatedFeeSelectorState, ), ) diff --git a/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/state/fee/SendFeeStateConverter.kt b/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/state/fee/SendFeeStateConverter.kt index caf0ee5683..8bab03a2c8 100644 --- a/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/state/fee/SendFeeStateConverter.kt +++ b/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/state/fee/SendFeeStateConverter.kt @@ -20,6 +20,7 @@ internal class SendFeeStateConverter( rate = feeCryptoCurrencyStatusProvider().value.fiatRate, appCurrency = appCurrencyProvider(), isFeeApproximate = false, + isCustomSelected = false, ) } } \ No newline at end of file diff --git a/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/state/previewdata/FeeStatePreviewData.kt b/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/state/previewdata/FeeStatePreviewData.kt index c07c45a39b..766380d826 100644 --- a/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/state/previewdata/FeeStatePreviewData.kt +++ b/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/state/previewdata/FeeStatePreviewData.kt @@ -48,6 +48,7 @@ internal object FeeStatePreviewData { ), isFeeApproximate = false, notifications = persistentListOf(), + isCustomSelected = false, ) val errorFeeState = feeState.copy(