summaryrefslogtreecommitdiff
path: root/wallet/src/main/java/net/taler/wallet/withdraw/WithdrawManager.kt
diff options
context:
space:
mode:
authorIván Ávalos <avalos@disroot.org>2024-02-28 10:03:24 -0600
committerTorsten Grote <t@grobox.de>2024-02-29 11:17:06 -0300
commit53163f914e8173239188beb01da2570642041b6a (patch)
tree20d500718488adc6a5570907d5328b49b3fcd8dc /wallet/src/main/java/net/taler/wallet/withdraw/WithdrawManager.kt
parent5d0b4a4bfda22d6a7c4664baa91c6046303bda4a (diff)
downloadtaler-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.kt39
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
},
)