diff options
author | Iván Ávalos <avalos@disroot.org> | 2024-02-28 10:03:24 -0600 |
---|---|---|
committer | Torsten Grote <t@grobox.de> | 2024-02-29 11:17:06 -0300 |
commit | 53163f914e8173239188beb01da2570642041b6a (patch) | |
tree | 20d500718488adc6a5570907d5328b49b3fcd8dc /wallet/src/main/java/net/taler/wallet/withdraw/WithdrawManager.kt | |
parent | 5d0b4a4bfda22d6a7c4664baa91c6046303bda4a (diff) | |
download | taler-android-53163f914e8173239188beb01da2570642041b6a.tar.gz taler-android-53163f914e8173239188beb01da2570642041b6a.tar.bz2 taler-android-53163f914e8173239188beb01da2570642041b6a.zip |
[wallet] Add proper rendering for x-taler-bank URIs
bug 0008532
Diffstat (limited to 'wallet/src/main/java/net/taler/wallet/withdraw/WithdrawManager.kt')
-rw-r--r-- | wallet/src/main/java/net/taler/wallet/withdraw/WithdrawManager.kt | 39 |
1 files changed, 31 insertions, 8 deletions
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 }, ) |