summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTorsten Grote <t@grobox.de>2023-02-22 09:01:31 -0300
committerTorsten Grote <t@grobox.de>2023-02-22 09:01:31 -0300
commit79d52ac4960e99d7b67f6435b03b010ed536e161 (patch)
treeb211146e93ef83df12ebdb73cf4b7ac966b9c661
parent005a08ea0f9558bfe92f71fa2da75c0493e61b69 (diff)
downloadtaler-android-79d52ac4960e99d7b67f6435b03b010ed536e161.tar.gz
taler-android-79d52ac4960e99d7b67f6435b03b010ed536e161.tar.bz2
taler-android-79d52ac4960e99d7b67f6435b03b010ed536e161.zip
[wallet] Improve selecting transaction after bank withdrawal
-rw-r--r--wallet/src/main/java/net/taler/wallet/transactions/TransactionManager.kt23
-rw-r--r--wallet/src/main/java/net/taler/wallet/withdraw/PromptWithdrawFragment.kt5
2 files changed, 17 insertions, 11 deletions
diff --git a/wallet/src/main/java/net/taler/wallet/transactions/TransactionManager.kt b/wallet/src/main/java/net/taler/wallet/transactions/TransactionManager.kt
index a65d9a6..2da9ab4 100644
--- a/wallet/src/main/java/net/taler/wallet/transactions/TransactionManager.kt
+++ b/wallet/src/main/java/net/taler/wallet/transactions/TransactionManager.kt
@@ -90,14 +90,23 @@ class TransactionManager(
}
/**
- * Returns true if given [transactionId] was found for given [currency] and selected.
+ * Returns true if given [transactionId] was found and selected, false otherwise.
*/
- fun selectTransaction(currency: String, transactionId: String): Boolean {
- val t = allTransactions[currency]?.find {
- it.transactionId == transactionId
- } ?: return false
- selectedTransaction = t
- return true
+ suspend fun selectTransaction(transactionId: String): Boolean {
+ var transaction: Transaction? = null
+ api.request("getTransactionById", Transaction.serializer()) {
+ put("transactionId", transactionId)
+ }.onError {
+ Log.e(TAG, "Error getting transaction $it")
+ }.onSuccess { result ->
+ transaction = result
+ }
+ return if (transaction != null) {
+ selectedTransaction = transaction
+ true
+ } else {
+ false
+ }
}
fun deleteTransaction(transactionId: String) = scope.launch {
diff --git a/wallet/src/main/java/net/taler/wallet/withdraw/PromptWithdrawFragment.kt b/wallet/src/main/java/net/taler/wallet/withdraw/PromptWithdrawFragment.kt
index abe9562..fd67e71 100644
--- a/wallet/src/main/java/net/taler/wallet/withdraw/PromptWithdrawFragment.kt
+++ b/wallet/src/main/java/net/taler/wallet/withdraw/PromptWithdrawFragment.kt
@@ -92,11 +92,8 @@ class PromptWithdrawFragment : Fragment() {
model.showProgressBar.value = false
withdrawManager.withdrawStatus.value = null
lifecycleScope.launch {
- // FIXME this is hacky and blocks the UI thread, not good for many transactions
- // load new transactions first and wait for result
- transactionManager.loadTransactions().join()
// now select new transaction based on currency and ID
- if (transactionManager.selectTransaction(status.currency, status.transactionId)) {
+ if (transactionManager.selectTransaction(status.transactionId)) {
findNavController().navigate(R.id.action_promptWithdraw_to_nav_transactions_detail_withdrawal)
} else {
findNavController().navigate(R.id.action_promptWithdraw_to_nav_main)