From 06fae63efa7e54f3f8e3f9a43006ae6b98968d33 Mon Sep 17 00:00:00 2001 From: Tangem Date: Wed, 10 Apr 2024 11:53:17 +0500 Subject: [PATCH] Updated on 2026-08-14 --- .../ui/components/fields/SimpleTextField.kt | 17 +++++++++++++---- .../state/confirm/SendNotificationFactory.kt | 8 +++----- .../presentation/viewmodel/SendViewModel.kt | 1 + 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/core/ui/src/main/java/com/tangem/core/ui/components/fields/SimpleTextField.kt b/core/ui/src/main/java/com/tangem/core/ui/components/fields/SimpleTextField.kt index 6d31ebeaef..ed91b52667 100644 --- a/core/ui/src/main/java/com/tangem/core/ui/components/fields/SimpleTextField.kt +++ b/core/ui/src/main/java/com/tangem/core/ui/components/fields/SimpleTextField.kt @@ -71,7 +71,18 @@ fun SimpleTextField( } } - var lastTextValue by remember(value) { mutableStateOf(value) } + var lastTextValue by remember(value) { + derivedStateOf { + val isSelectionLastIndex = textFieldValueState.selection.end == textFieldValueState.text.lastIndex + if (textFieldValueState.text.isBlank() || isSelectionLastIndex) { + textFieldValueState = textFieldValueState.copy( + text = value, + selection = getValueRange(value), + ) + } + } + mutableStateOf(value) + } CompositionLocalProvider(LocalTextSelectionColors provides customTextSelectionColors) { BasicTextField( @@ -82,9 +93,7 @@ fun SimpleTextField( val stringChangedSinceLastInvocation = lastTextValue != newTextFieldValueState.text lastTextValue = newTextFieldValueState.text - if (stringChangedSinceLastInvocation) { - onValueChange(newTextFieldValueState.text) - } + if (stringChangedSinceLastInvocation) onValueChange(newTextFieldValueState.text) }, textStyle = textStyle.copy(color = color), cursorBrush = SolidColor(TangemTheme.colors.text.primary1), diff --git a/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/state/confirm/SendNotificationFactory.kt b/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/state/confirm/SendNotificationFactory.kt index 8b5e5530c2..782b8beb8e 100644 --- a/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/state/confirm/SendNotificationFactory.kt +++ b/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/state/confirm/SendNotificationFactory.kt @@ -17,10 +17,6 @@ import com.tangem.domain.wallets.models.UserWallet import com.tangem.features.send.impl.R import com.tangem.features.send.impl.presentation.analytics.SendAnalyticEvents import com.tangem.features.send.impl.presentation.state.* -import com.tangem.features.send.impl.presentation.state.SendNotification -import com.tangem.features.send.impl.presentation.state.SendStates -import com.tangem.features.send.impl.presentation.state.SendUiState -import com.tangem.features.send.impl.presentation.state.StateRouter import com.tangem.features.send.impl.presentation.state.fee.FeeSelectorState import com.tangem.features.send.impl.presentation.state.fee.FeeType import com.tangem.features.send.impl.presentation.viewmodel.SendClickIntents @@ -38,6 +34,7 @@ import java.math.BigDecimal internal class SendNotificationFactory( private val cryptoCurrencyStatusProvider: Provider, private val coinCryptoCurrencyStatusProvider: Provider, + private val feePaidCryptoCurrencyStatusProvider: Provider, private val currentStateProvider: Provider, private val userWalletProvider: Provider, private val currencyChecksRepository: CurrencyChecksRepository, @@ -91,10 +88,11 @@ internal class SendNotificationFactory( ) { val cryptoCurrencyStatus = cryptoCurrencyStatusProvider() val coinCryptoCurrencyStatus = coinCryptoCurrencyStatusProvider() + val feePaidCryptoCurrencyStatus = feePaidCryptoCurrencyStatusProvider() val cryptoAmount = cryptoCurrencyStatus.value.amount ?: BigDecimal.ZERO val coinCryptoAmount = coinCryptoCurrencyStatus.value.amount ?: BigDecimal.ZERO - val showNotification = if (cryptoCurrencyStatus.currency is CryptoCurrency.Token) { + val showNotification = if (cryptoCurrencyStatus.currency.id == feePaidCryptoCurrencyStatus?.currency?.id) { receivedAmount > cryptoAmount || feeAmount > coinCryptoAmount } else { receivedAmount + feeAmount > cryptoAmount diff --git a/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/viewmodel/SendViewModel.kt b/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/viewmodel/SendViewModel.kt index 069a34f6a3..99e752dd9f 100644 --- a/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/viewmodel/SendViewModel.kt +++ b/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/viewmodel/SendViewModel.kt @@ -155,6 +155,7 @@ internal class SendViewModel @Inject constructor( private val sendNotificationFactory = SendNotificationFactory( cryptoCurrencyStatusProvider = Provider { cryptoCurrencyStatus }, coinCryptoCurrencyStatusProvider = Provider { coinCryptoCurrencyStatus }, + feePaidCryptoCurrencyStatusProvider = Provider { feeCryptoCurrencyStatus }, currentStateProvider = Provider { uiState }, userWalletProvider = Provider { userWallet }, stateRouterProvider = Provider { stateRouter },