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