diff --git a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/common/PredefinedValues.kt b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/common/PredefinedValues.kt index adbfd84dfc..ef94394fcf 100644 --- a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/common/PredefinedValues.kt +++ b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/common/PredefinedValues.kt @@ -4,19 +4,19 @@ sealed class PredefinedValues { data object Empty : PredefinedValues() sealed class Content : PredefinedValues() { - abstract val amount: String abstract val address: String + abstract val amount: String? abstract val memo: String? data class Deeplink( - override val amount: String, + override val amount: String?, override val address: String, override val memo: String?, val transactionId: String, ) : Content() data class QrCode( - override val amount: String, + override val amount: String?, override val address: String, override val memo: String?, ) : Content() diff --git a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/send/model/SendModel.kt b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/send/model/SendModel.kt index 250e790576..ff273f2b85 100644 --- a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/send/model/SendModel.kt +++ b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/send/model/SendModel.kt @@ -121,8 +121,8 @@ internal class SendModel @Inject constructor( _uiState.update { it.copy(destinationUM = destinationUM) } } - override fun onAmountResult(amountUM: AmountState) { - resetPredefinedAmount() + override fun onAmountResult(amountUM: AmountState, isResetPredefined: Boolean) { + if (isResetPredefined) resetPredefinedAmount() _uiState.update { it.copy(amountUM = amountUM) } } @@ -131,7 +131,6 @@ internal class SendModel @Inject constructor( } override fun onResult(sendUM: SendUM) { - resetPredefinedAmount() _uiState.update { sendUM } } @@ -163,8 +162,8 @@ internal class SendModel @Inject constructor( // reset predefined amount val internalPredefinedValues = predefinedValues predefinedValues = when (internalPredefinedValues) { - is PredefinedValues.Content.Deeplink -> internalPredefinedValues.copy(amount = "") - is PredefinedValues.Content.QrCode -> internalPredefinedValues.copy(amount = "") + is PredefinedValues.Content.Deeplink -> internalPredefinedValues.copy(amount = null) + is PredefinedValues.Content.QrCode -> internalPredefinedValues.copy(amount = null) PredefinedValues.Empty -> internalPredefinedValues } } diff --git a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/amount/SendAmountComponent.kt b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/amount/SendAmountComponent.kt index f79c417846..b2a1c6a264 100644 --- a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/amount/SendAmountComponent.kt +++ b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/amount/SendAmountComponent.kt @@ -38,6 +38,6 @@ internal class SendAmountComponent( } interface ModelCallback : SendNavigationModelCallback { - fun onAmountResult(amountUM: AmountState) + fun onAmountResult(amountUM: AmountState, isResetPredefined: Boolean) } } \ No newline at end of file diff --git a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/amount/model/SendAmountModel.kt b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/amount/model/SendAmountModel.kt index 11974ef160..691bd074ca 100644 --- a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/amount/model/SendAmountModel.kt +++ b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/amount/model/SendAmountModel.kt @@ -103,9 +103,9 @@ internal class SendAmountModel @Inject constructor( ) } } - val predefinedValues = params.predefinedValues as? PredefinedValues.Content - if (predefinedValues?.amount != null) { - onAmountValueChange(predefinedValues.amount) + val predefinedAmount = (params.predefinedValues as? PredefinedValues.Content)?.amount + if (predefinedAmount != null) { + onAmountValueChange(predefinedAmount) } } @@ -220,7 +220,12 @@ internal class SendAmountModel @Inject constructor( private fun saveResult() { val params = params as? SendAmountComponentParams.AmountParams ?: return - params.callback.onAmountResult(uiState.value) + val predefinedAmount = (params.predefinedValues as? PredefinedValues.Content.QrCode)?.amount + val enteredAmount = (uiState.value as? AmountState.Data)?.amountTextField?.value + params.callback.onAmountResult( + amountUM = uiState.value, + isResetPredefined = predefinedAmount != enteredAmount, + ) } private fun configAmountNavigation() {