diff --git a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/send/confirm/model/SendConfirmModel.kt b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/send/confirm/model/SendConfirmModel.kt index 31b351c7d3..8f3da0e8ed 100644 --- a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/send/confirm/model/SendConfirmModel.kt +++ b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/send/confirm/model/SendConfirmModel.kt @@ -19,8 +19,11 @@ import com.tangem.core.decompose.model.ParamsContainer import com.tangem.core.decompose.navigation.Router import com.tangem.core.navigation.share.ShareManager import com.tangem.core.navigation.url.UrlOpener +import com.tangem.core.ui.extensions.TextReference import com.tangem.core.ui.extensions.resourceReference import com.tangem.core.ui.extensions.stringReference +import com.tangem.core.ui.extensions.wrappedList +import com.tangem.domain.models.wallet.isHotWallet import com.tangem.domain.account.featuretoggle.AccountsFeatureToggles import com.tangem.domain.account.status.usecase.ManageCryptoCurrenciesUseCase import com.tangem.domain.balancehiding.GetBalanceHidingSettingsUseCase @@ -592,21 +595,16 @@ internal class SendConfirmModel @Inject constructor( private fun primaryButtonUM(): NavigationButton { val confirmUM = uiState.value.confirmUM - val isReadyToSend = confirmUM is ConfirmUM.Content && !confirmUM.isSending + val isContent = confirmUM is ConfirmUM.Content + val isReadyToSend = isContent && !confirmUM.isSending + val isHoldToConfirm = userWallet.isHotWallet && isContent return NavigationButton( - textReference = when (confirmUM) { - is ConfirmUM.Success -> resourceReference(R.string.common_close) - is ConfirmUM.Content -> if (confirmUM.isSending) { - resourceReference(R.string.send_sending) - } else { - resourceReference(R.string.common_send) - } - else -> resourceReference(R.string.common_send) - }, + textReference = getPrimaryButtonText(confirmUM, isHoldToConfirm), iconRes = walletInterationIcon(userWallet), - isIconVisible = isReadyToSend, + isIconVisible = isReadyToSend && !isHoldToConfirm, isEnabled = confirmUM.isPrimaryButtonEnabled, isHapticClick = isReadyToSend, + isHoldToConfirm = isHoldToConfirm, onClick = { when (confirmUM) { is ConfirmUM.Success -> appRouter.pop() @@ -621,6 +619,18 @@ internal class SendConfirmModel @Inject constructor( ) } + private fun getPrimaryButtonText(confirmUM: ConfirmUM, isHoldToConfirm: Boolean): TextReference { + return when { + isHoldToConfirm -> resourceReference( + id = com.tangem.core.ui.R.string.common_hold_to, + formatArgs = wrappedList(resourceReference(R.string.common_send)), + ) + confirmUM is ConfirmUM.Success -> resourceReference(R.string.common_close) + confirmUM is ConfirmUM.Content && confirmUM.isSending -> resourceReference(R.string.send_sending) + else -> resourceReference(R.string.common_send) + } + } + override fun onFeeResult(feeSelectorUM: FeeSelectorUMRedesigned) { sendIdleTimer = SystemClock.elapsedRealtime() _uiState.update { it.copy(feeSelectorUM = feeSelectorUM) } diff --git a/features/swap-v2/impl/src/main/java/com/tangem/features/swap/v2/impl/sendviaswap/confirm/model/SendWithSwapConfirmModel.kt b/features/swap-v2/impl/src/main/java/com/tangem/features/swap/v2/impl/sendviaswap/confirm/model/SendWithSwapConfirmModel.kt index e2015b18c3..66d822dd46 100644 --- a/features/swap-v2/impl/src/main/java/com/tangem/features/swap/v2/impl/sendviaswap/confirm/model/SendWithSwapConfirmModel.kt +++ b/features/swap-v2/impl/src/main/java/com/tangem/features/swap/v2/impl/sendviaswap/confirm/model/SendWithSwapConfirmModel.kt @@ -488,8 +488,9 @@ internal class SendWithSwapConfirmModel @Inject constructor( it.second is SendWithSwapRoute.Confirm }.onEach { (state, _) -> val confirmUM = state.confirmUM - val isReadyToSend = confirmUM is ConfirmUM.Content && !confirmUM.isTransactionInProcess - val isHoldToConfirm = params.userWallet.isHotWallet && confirmUM is ConfirmUM.Content + val isContent = confirmUM is ConfirmUM.Content + val isReadyToSend = isContent && !confirmUM.isTransactionInProcess + val isHoldToConfirm = params.userWallet.isHotWallet && isContent params.callback.onResult( route = SendWithSwapRoute.Confirm, sendWithSwapUM = state.copy(