Updated on 2026-08-14

This commit is contained in:
Tangem 2026-03-27 06:30:43 +03:00
parent 5e7e57b942
commit 1ec1196e12
29 changed files with 466 additions and 50 deletions

View file

@ -755,7 +755,12 @@ internal class WalletModel @Inject constructor(
}
private suspend fun handleQrResult(qrCode: String, resultSource: QrResultSource) {
when (val target = resolveQrSendTargetsUseCase(qrCode)) {
val target = resolveQrSendTargetsUseCase(qrCode)
handleQrTarget(target, resultSource)
}
private fun handleQrTarget(target: QrSendTarget, resultSource: QrResultSource) {
when (target) {
is QrSendTarget.WalletConnect -> {
val source = when (resultSource) {
QrResultSource.CLIPBOARD -> WcPairRequest.Source.CLIPBOARD
@ -788,6 +793,14 @@ internal class WalletModel @Inject constructor(
is QrSendTarget.AddressSameAsWallet -> {
uiMessageSender.send(WalletAlertUM.qrCodeAddressSameAsWallet())
}
is QrSendTarget.Warning -> {
uiMessageSender.send(
WalletAlertUM.qrCodeUnsupportedParams(
unsupportedParams = target.unsupportedParams,
onContinue = { handleQrTarget(target.target, resultSource) },
),
)
}
is QrSendTarget.Error -> handleQrError(target.error)
}
}

View file

@ -94,6 +94,24 @@ internal object WalletAlertUM {
)
}
fun qrCodeUnsupportedParams(unsupportedParams: Map<String, String>, onContinue: () -> Unit): DialogMessage {
val paramsList = unsupportedParams.entries.joinToString { "${it.key} = ${it.value}" }
return DialogMessage(
title = resourceReference(R.string.qr_scanner_warning_unknown_parameters_title),
message = resourceReference(
id = R.string.qr_scanner_warning_unknown_parameters_message,
formatArgs = WrappedList(listOf(paramsList)),
),
firstActionBuilder = {
EventMessageAction(
title = resourceReference(R.string.common_continue),
onClick = onContinue,
)
},
secondActionBuilder = { cancelAction() },
)
}
fun qrCodeAddressSameAsWallet(): DialogMessage {
return DialogMessage(
message = resourceReference(R.string.send_error_address_same_as_wallet),