Updated on 2026-08-14

This commit is contained in:
Tangem 2026-03-31 20:05:34 +03:00
parent 1f617808db
commit 4ff20f3479

View file

@ -16,8 +16,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.HoldToConfirmButtonFeatureToggles
import com.tangem.core.ui.extensions.TextReference
import com.tangem.core.ui.extensions.resourceReference
import com.tangem.core.ui.extensions.stringReference
import com.tangem.domain.models.wallet.isHotWallet
import com.tangem.datasource.local.nft.converter.NFTSdkAssetConverter
import com.tangem.domain.feedback.GetWalletMetaInfoUseCase
import com.tangem.domain.feedback.SaveBlockchainErrorUseCase
@ -88,6 +91,7 @@ internal class NFTSendConfirmModel @Inject constructor(
private val nftSendAnalyticHelper: NFTSendAnalyticHelper,
private val nftSendSuccessTrigger: NFTSendSuccessTrigger,
private val feeSelectorReloadTrigger: FeeSelectorReloadTrigger,
private val holdToConfirmButtonFeatureToggles: HoldToConfirmButtonFeatureToggles,
sendBalanceUpdaterFactory: SendBalanceUpdater.Factory,
) : Model(), NFTSendConfirmClickIntents, SendNotificationsComponent.ModelCallback, FeeSelectorModelCallback {
@ -419,21 +423,17 @@ internal class NFTSendConfirmModel @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 = holdToConfirmButtonFeatureToggles.isHoldToConfirmEnabled &&
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 -> {
@ -453,6 +453,15 @@ internal class NFTSendConfirmModel @Inject constructor(
)
}
private fun getPrimaryButtonText(confirmUM: ConfirmUM, isHoldToConfirm: Boolean): TextReference {
return when {
isHoldToConfirm -> 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)
}
}
private companion object {
const val CHECK_FEE_UPDATE_DELAY = 10_000L
}