summaryrefslogtreecommitdiff
path: root/wallet
diff options
context:
space:
mode:
authorIván Ávalos <avalos@disroot.org>2024-01-31 11:33:16 -0600
committerTorsten Grote <t@grobox.de>2024-02-06 09:58:38 -0300
commit8062b84d95f759e435d6248c3523ac5c94dce743 (patch)
tree792b42fadf5e3e35afd4732eff848f24ee711c77 /wallet
parentd604f8edd4a0bd75d25336c6b62ebbbb31cbef17 (diff)
downloadtaler-android-8062b84d95f759e435d6248c3523ac5c94dce743.tar.gz
taler-android-8062b84d95f759e435d6248c3523ac5c94dce743.tar.bz2
taler-android-8062b84d95f759e435d6248c3523ac5c94dce743.zip
[wallet] List possibleExchanges in exchange selection for withdrawals
bug 0008300
Diffstat (limited to 'wallet')
-rw-r--r--wallet/src/main/java/net/taler/wallet/exchanges/SelectExchangeFragment.kt13
-rw-r--r--wallet/src/main/java/net/taler/wallet/withdraw/WithdrawManager.kt10
2 files changed, 19 insertions, 4 deletions
diff --git a/wallet/src/main/java/net/taler/wallet/exchanges/SelectExchangeFragment.kt b/wallet/src/main/java/net/taler/wallet/exchanges/SelectExchangeFragment.kt
index 61e0db5..732e0c5 100644
--- a/wallet/src/main/java/net/taler/wallet/exchanges/SelectExchangeFragment.kt
+++ b/wallet/src/main/java/net/taler/wallet/exchanges/SelectExchangeFragment.kt
@@ -18,6 +18,7 @@ package net.taler.wallet.exchanges
import androidx.navigation.fragment.findNavController
import net.taler.common.fadeOut
+import net.taler.wallet.withdraw.WithdrawStatus.ReceivedDetails
class SelectExchangeFragment : ExchangeListFragment() {
@@ -30,17 +31,23 @@ class SelectExchangeFragment : ExchangeListFragment() {
override fun onExchangeUpdate(exchanges: List<ExchangeItem>) {
ui.progressBar.fadeOut()
- super.onExchangeUpdate(exchanges.filter { exchangeItem ->
- exchangeItem.currency == exchangeSelection.amount.currency
- })
+ val status = withdrawManager.withdrawStatus.value
+ if (status is ReceivedDetails) {
+ super.onExchangeUpdate(status.possibleExchanges)
+ } else {
+ findNavController().navigateUp()
+ }
}
override fun onExchangeSelected(item: ExchangeItem) {
+ val status = withdrawManager.withdrawStatus.value
+ val exchanges = (status as? ReceivedDetails)?.possibleExchanges ?: emptyList()
withdrawManager.getWithdrawalDetails(
exchangeBaseUrl = item.exchangeBaseUrl,
amount = exchangeSelection.amount,
showTosImmediately = true,
uri = exchangeSelection.talerWithdrawUri,
+ possibleExchanges = exchanges,
)
findNavController().navigateUp()
}
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 ceae7e1..34ae69f 100644
--- a/wallet/src/main/java/net/taler/wallet/withdraw/WithdrawManager.kt
+++ b/wallet/src/main/java/net/taler/wallet/withdraw/WithdrawManager.kt
@@ -52,6 +52,7 @@ sealed class WithdrawStatus {
val tosText: String,
val tosEtag: String,
val showImmediately: Event<Boolean>,
+ val possibleExchanges: List<ExchangeItem> = emptyList(),
) : WithdrawStatus()
data class ReceivedDetails(
@@ -61,6 +62,7 @@ sealed class WithdrawStatus {
val amountEffective: Amount,
val withdrawalAccountList: List<WithdrawalExchangeAccountDetails>,
val ageRestrictionOptions: List<Int>? = null,
+ val possibleExchanges: List<ExchangeItem> = emptyList(),
) : WithdrawStatus()
data object Withdrawing : WithdrawStatus()
@@ -191,6 +193,7 @@ class WithdrawManager(
amount = details.amount,
showTosImmediately = false,
uri = uri,
+ possibleExchanges = details.possibleExchanges,
)
}
}
@@ -200,6 +203,7 @@ class WithdrawManager(
amount: Amount,
showTosImmediately: Boolean = false,
uri: String? = null,
+ possibleExchanges: List<ExchangeItem> = emptyList(),
) = scope.launch {
withdrawStatus.value = WithdrawStatus.Loading(uri)
api.request("getWithdrawalDetailsForAmount", ManualWithdrawalDetails.serializer()) {
@@ -216,8 +220,9 @@ class WithdrawManager(
amountEffective = details.amountEffective,
withdrawalAccountList = details.withdrawalAccountsList,
ageRestrictionOptions = details.ageRestrictionOptions,
+ possibleExchanges = possibleExchanges,
)
- } else getExchangeTos(exchangeBaseUrl, details, showTosImmediately, uri)
+ } else getExchangeTos(exchangeBaseUrl, details, showTosImmediately, uri, possibleExchanges)
}
}
@@ -240,6 +245,7 @@ class WithdrawManager(
details: ManualWithdrawalDetails,
showImmediately: Boolean,
uri: String?,
+ possibleExchanges: List<ExchangeItem>,
) = scope.launch {
api.request("getExchangeTos", TosResponse.serializer()) {
put("exchangeBaseUrl", exchangeBaseUrl)
@@ -256,6 +262,7 @@ class WithdrawManager(
tosText = it.content,
tosEtag = it.currentEtag,
showImmediately = showImmediately.toEvent(),
+ possibleExchanges = possibleExchanges,
)
}
}
@@ -278,6 +285,7 @@ class WithdrawManager(
amountEffective = s.amountEffective,
withdrawalAccountList = s.withdrawalAccountList,
ageRestrictionOptions = s.ageRestrictionOptions,
+ possibleExchanges = s.possibleExchanges,
)
}
}