From 53163f914e8173239188beb01da2570642041b6a Mon Sep 17 00:00:00 2001 From: Iván Ávalos Date: Wed, 28 Feb 2024 10:03:24 -0600 Subject: [wallet] Add proper rendering for x-taler-bank URIs bug 0008532 --- .../net/taler/wallet/withdraw/WithdrawManager.kt | 39 +++++++++++++++++----- 1 file changed, 31 insertions(+), 8 deletions(-) (limited to 'wallet/src/main/java/net/taler/wallet/withdraw/WithdrawManager.kt') diff --git a/wallet/src/main/java/net/taler/wallet/withdraw/WithdrawManager.kt b/wallet/src/main/java/net/taler/wallet/withdraw/WithdrawManager.kt index 231091f..d5438f2 100644 --- a/wallet/src/main/java/net/taler/wallet/withdraw/WithdrawManager.kt +++ b/wallet/src/main/java/net/taler/wallet/withdraw/WithdrawManager.kt @@ -91,11 +91,22 @@ sealed class TransferData { val currency get() = withdrawalAccount.transferAmount?.currency + data class Taler( + override val subject: String, + override val amountRaw: Amount, + override val amountEffective: Amount, + override val withdrawalAccount: WithdrawalExchangeAccountDetails, + val receiverName: String? = null, + val bankUrl: String, + val account: String, + ): TransferData() + data class IBAN( override val subject: String, override val amountRaw: Amount, override val amountEffective: Amount, override val withdrawalAccount: WithdrawalExchangeAccountDetails, + val receiverName: String? = null, val iban: String, ): TransferData() @@ -353,7 +364,7 @@ fun createManualTransferRequired( transactionAmountRaw = amountRaw, transactionAmountEffective = amountEffective, exchangeBaseUrl = exchangeBaseUrl, - withdrawalTransfers = withdrawalAccountList.map { + withdrawalTransfers = withdrawalAccountList.mapNotNull { val uri = Uri.parse(it.paytoUri.replace("receiver-name=", "receiver_name=")) if ("bitcoin".equals(uri.authority, true)) { val msg = uri.getQueryParameter("message").orEmpty() @@ -368,13 +379,25 @@ fun createManualTransferRequired( amountEffective = amountEffective, withdrawalAccount = it.copy(paytoUri = uri.toString()) ) - } else TransferData.IBAN( - iban = uri.lastPathSegment!!, - subject = uri.getQueryParameter("message") ?: "Error: No message in URI", - amountRaw = amountRaw, - amountEffective = amountEffective, - withdrawalAccount = it.copy(paytoUri = uri.toString()) - ) + } else if (uri.authority.equals("x-taler-bank", true)) { + TransferData.Taler( + account = uri.lastPathSegment!!, + bankUrl = uri.pathSegments.first(), + receiverName = uri.getQueryParameter("receiver_name"), + subject = uri.getQueryParameter("message") ?: "Error: No message in URI", + amountRaw = amountRaw, + amountEffective = amountEffective, + withdrawalAccount = it.copy(paytoUri = uri.toString()), + ) + } else if (uri.authority.equals("iban", true)) { + TransferData.IBAN( + iban = uri.lastPathSegment!!, + subject = uri.getQueryParameter("message") ?: "Error: No message in URI", + amountRaw = amountRaw, + amountEffective = amountEffective, + withdrawalAccount = it.copy(paytoUri = uri.toString()), + ) + } else null }, ) -- cgit v1.2.3