Updated on 2026-08-14
This commit is contained in:
parent
4226d4e94c
commit
aed32a47f1
8 changed files with 50 additions and 25 deletions
|
|
@ -16,6 +16,7 @@ import com.tangem.features.walletconnect.transaction.entity.common.WcTransaction
|
||||||
import com.tangem.features.walletconnect.transaction.entity.send.WcSendTransactionItemUM
|
import com.tangem.features.walletconnect.transaction.entity.send.WcSendTransactionItemUM
|
||||||
import com.tangem.features.walletconnect.transaction.entity.send.WcSendTransactionUM
|
import com.tangem.features.walletconnect.transaction.entity.send.WcSendTransactionUM
|
||||||
import com.tangem.features.walletconnect.utils.WcNotificationsFactory
|
import com.tangem.features.walletconnect.utils.WcNotificationsFactory
|
||||||
|
import com.tangem.domain.models.wallet.isHotWallet
|
||||||
import com.tangem.utils.converter.Converter
|
import com.tangem.utils.converter.Converter
|
||||||
import kotlinx.collections.immutable.toImmutableList
|
import kotlinx.collections.immutable.toImmutableList
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
@ -62,6 +63,7 @@ internal class WcSendTransactionUMConverter @Inject constructor(
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
feeErrorNotification = feeErrorNotification,
|
feeErrorNotification = feeErrorNotification,
|
||||||
|
isHoldToConfirmEnabled = value.context.session.wallet.isHotWallet,
|
||||||
),
|
),
|
||||||
feeSelectorUM = when (value.feeState) {
|
feeSelectorUM = when (value.feeState) {
|
||||||
WcTransactionFeeState.None -> FeeSelectorUM.Loading
|
WcTransactionFeeState.None -> FeeSelectorUM.Loading
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@ import com.tangem.features.walletconnect.transaction.entity.common.WcTransaction
|
||||||
import com.tangem.features.walletconnect.transaction.entity.common.WcTransactionRequestInfoUM
|
import com.tangem.features.walletconnect.transaction.entity.common.WcTransactionRequestInfoUM
|
||||||
import com.tangem.features.walletconnect.transaction.entity.sign.WcSignTransactionItemUM
|
import com.tangem.features.walletconnect.transaction.entity.sign.WcSignTransactionItemUM
|
||||||
import com.tangem.features.walletconnect.transaction.entity.sign.WcSignTransactionUM
|
import com.tangem.features.walletconnect.transaction.entity.sign.WcSignTransactionUM
|
||||||
|
import com.tangem.domain.models.wallet.isHotWallet
|
||||||
import com.tangem.utils.converter.Converter
|
import com.tangem.utils.converter.Converter
|
||||||
import kotlinx.collections.immutable.toImmutableList
|
import kotlinx.collections.immutable.toImmutableList
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
@ -35,6 +36,7 @@ internal class WcSignTransactionUMConverter @Inject constructor(
|
||||||
isLoading = value.signState.domainStep == WcSignStep.Signing,
|
isLoading = value.signState.domainStep == WcSignStep.Signing,
|
||||||
address = WcAddressConverter.convert(value.context.derivationState),
|
address = WcAddressConverter.convert(value.context.derivationState),
|
||||||
walletInteractionIcon = walletInterationIcon(value.context.session.wallet),
|
walletInteractionIcon = walletInterationIcon(value.context.session.wallet),
|
||||||
|
isHoldToConfirmEnabled = value.context.session.wallet.isHotWallet,
|
||||||
),
|
),
|
||||||
transactionRequestInfo = WcTransactionRequestInfoUM(
|
transactionRequestInfo = WcTransactionRequestInfoUM(
|
||||||
requestBlockUMConverter.convert(
|
requestBlockUMConverter.convert(
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@ import com.tangem.features.walletconnect.transaction.entity.common.WcTransaction
|
||||||
import com.tangem.features.walletconnect.transaction.entity.common.WcTransactionRequestInfoUM
|
import com.tangem.features.walletconnect.transaction.entity.common.WcTransactionRequestInfoUM
|
||||||
import com.tangem.features.walletconnect.transaction.entity.sign.WcSignTransactionItemUM
|
import com.tangem.features.walletconnect.transaction.entity.sign.WcSignTransactionItemUM
|
||||||
import com.tangem.features.walletconnect.transaction.entity.sign.WcSignTransactionUM
|
import com.tangem.features.walletconnect.transaction.entity.sign.WcSignTransactionUM
|
||||||
|
import com.tangem.domain.models.wallet.isHotWallet
|
||||||
import com.tangem.utils.converter.Converter
|
import com.tangem.utils.converter.Converter
|
||||||
import kotlinx.collections.immutable.toImmutableList
|
import kotlinx.collections.immutable.toImmutableList
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
@ -35,6 +36,7 @@ internal class WcSignTypedDataUMConverter @Inject constructor(
|
||||||
address = WcAddressConverter.convert(value.context.derivationState),
|
address = WcAddressConverter.convert(value.context.derivationState),
|
||||||
isLoading = value.signState.domainStep == WcSignStep.Signing,
|
isLoading = value.signState.domainStep == WcSignStep.Signing,
|
||||||
walletInteractionIcon = walletInterationIcon(value.context.session.wallet),
|
walletInteractionIcon = walletInterationIcon(value.context.session.wallet),
|
||||||
|
isHoldToConfirmEnabled = value.context.session.wallet.isHotWallet,
|
||||||
),
|
),
|
||||||
transactionRequestInfo = WcTransactionRequestInfoUM(
|
transactionRequestInfo = WcTransactionRequestInfoUM(
|
||||||
blocks = buildList {
|
blocks = buildList {
|
||||||
|
|
|
||||||
|
|
@ -34,4 +34,5 @@ internal data class WcSendTransactionItemUM(
|
||||||
val feeErrorNotification: NotificationUM.Info?,
|
val feeErrorNotification: NotificationUM.Info?,
|
||||||
val isLoading: Boolean = false,
|
val isLoading: Boolean = false,
|
||||||
val walletInteractionIcon: Int? = null,
|
val walletInteractionIcon: Int? = null,
|
||||||
|
val isHoldToConfirmEnabled: Boolean = false,
|
||||||
) : TangemBottomSheetConfigContent
|
) : TangemBottomSheetConfigContent
|
||||||
|
|
@ -21,4 +21,5 @@ internal data class WcSignTransactionItemUM(
|
||||||
val address: String?,
|
val address: String?,
|
||||||
val walletInteractionIcon: Int?,
|
val walletInteractionIcon: Int?,
|
||||||
val isLoading: Boolean = false,
|
val isLoading: Boolean = false,
|
||||||
|
val isHoldToConfirmEnabled: Boolean = false,
|
||||||
) : TangemBottomSheetConfigContent
|
) : TangemBottomSheetConfigContent
|
||||||
|
|
@ -8,9 +8,11 @@ import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import com.domain.blockaid.models.transaction.ValidationResult
|
import com.domain.blockaid.models.transaction.ValidationResult
|
||||||
|
import com.tangem.core.ui.components.HoldToConfirmButton
|
||||||
import com.tangem.core.ui.components.PrimaryButton
|
import com.tangem.core.ui.components.PrimaryButton
|
||||||
import com.tangem.core.ui.components.PrimaryButtonIconEnd
|
import com.tangem.core.ui.components.PrimaryButtonIconEnd
|
||||||
import com.tangem.core.ui.components.SecondaryButton
|
import com.tangem.core.ui.components.SecondaryButton
|
||||||
|
import com.tangem.core.ui.R as CoreR
|
||||||
import com.tangem.core.ui.extensions.TextReference
|
import com.tangem.core.ui.extensions.TextReference
|
||||||
import com.tangem.core.ui.extensions.resolveReference
|
import com.tangem.core.ui.extensions.resolveReference
|
||||||
import com.tangem.core.ui.extensions.stringResourceSafe
|
import com.tangem.core.ui.extensions.stringResourceSafe
|
||||||
|
|
@ -28,31 +30,43 @@ internal fun WcTransactionRequestButtons(
|
||||||
onClickActiveButton: () -> Unit,
|
onClickActiveButton: () -> Unit,
|
||||||
modifier: Modifier = Modifier,
|
modifier: Modifier = Modifier,
|
||||||
enabled: Boolean = true,
|
enabled: Boolean = true,
|
||||||
|
isHoldToConfirmEnabled: Boolean = false,
|
||||||
) {
|
) {
|
||||||
WcCommonButtons(
|
WcCommonButtons(
|
||||||
onDismiss = onDismiss,
|
onDismiss = onDismiss,
|
||||||
modifier = modifier,
|
modifier = modifier,
|
||||||
primaryButton = {
|
primaryButton = {
|
||||||
// Before change, make sure you are align with WcSendTransactionModel::onSign
|
val buttonModifier = Modifier
|
||||||
when (validationResult) {
|
|
||||||
ValidationResult.UNSAFE,
|
|
||||||
ValidationResult.WARNING,
|
|
||||||
-> PrimaryButton(
|
|
||||||
modifier = Modifier
|
|
||||||
.fillMaxWidth()
|
.fillMaxWidth()
|
||||||
.weight(1f),
|
.weight(1f)
|
||||||
|
|
||||||
|
// Before change, make sure you are align with WcSendTransactionModel::onSign
|
||||||
|
when {
|
||||||
|
validationResult == ValidationResult.UNSAFE ||
|
||||||
|
validationResult == ValidationResult.WARNING -> {
|
||||||
|
PrimaryButton(
|
||||||
|
modifier = buttonModifier,
|
||||||
text = stringResourceSafe(R.string.common_continue),
|
text = stringResourceSafe(R.string.common_continue),
|
||||||
onClick = onClickActiveButton,
|
onClick = onClickActiveButton,
|
||||||
showProgress = isLoading,
|
showProgress = isLoading,
|
||||||
enabled = enabled,
|
enabled = enabled,
|
||||||
)
|
)
|
||||||
ValidationResult.SAFE,
|
}
|
||||||
ValidationResult.FAILED_TO_VALIDATE,
|
isHoldToConfirmEnabled -> {
|
||||||
null,
|
HoldToConfirmButton(
|
||||||
-> PrimaryButtonIconEnd(
|
modifier = buttonModifier,
|
||||||
modifier = Modifier
|
text = stringResourceSafe(
|
||||||
.fillMaxWidth()
|
CoreR.string.common_hold_to,
|
||||||
.weight(1f),
|
activeButtonText.resolveReference(),
|
||||||
|
),
|
||||||
|
onConfirm = onClickActiveButton,
|
||||||
|
isLoading = isLoading,
|
||||||
|
enabled = enabled,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
else -> {
|
||||||
|
PrimaryButtonIconEnd(
|
||||||
|
modifier = buttonModifier,
|
||||||
text = activeButtonText.resolveReference(),
|
text = activeButtonText.resolveReference(),
|
||||||
onClick = onClickActiveButton,
|
onClick = onClickActiveButton,
|
||||||
iconResId = walletInteractionIcon,
|
iconResId = walletInteractionIcon,
|
||||||
|
|
@ -60,6 +74,7 @@ internal fun WcTransactionRequestButtons(
|
||||||
enabled = enabled,
|
enabled = enabled,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -144,6 +144,7 @@ internal fun WcSendTransactionModalBottomSheet(
|
||||||
enabled = state.sendEnabled,
|
enabled = state.sendEnabled,
|
||||||
walletInteractionIcon = state.walletInteractionIcon,
|
walletInteractionIcon = state.walletInteractionIcon,
|
||||||
validationResult = state.transactionValidationResult,
|
validationResult = state.transactionValidationResult,
|
||||||
|
isHoldToConfirmEnabled = state.isHoldToConfirmEnabled,
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -101,6 +101,7 @@ internal fun WcSignTransactionModalBottomSheetContent(
|
||||||
isLoading = state.isLoading,
|
isLoading = state.isLoading,
|
||||||
walletInteractionIcon = state.walletInteractionIcon,
|
walletInteractionIcon = state.walletInteractionIcon,
|
||||||
validationResult = null,
|
validationResult = null,
|
||||||
|
isHoldToConfirmEnabled = state.isHoldToConfirmEnabled,
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue