diff options
author | Torsten Grote <t@grobox.de> | 2023-02-22 09:01:31 -0300 |
---|---|---|
committer | Torsten Grote <t@grobox.de> | 2023-02-22 09:01:31 -0300 |
commit | 79d52ac4960e99d7b67f6435b03b010ed536e161 (patch) | |
tree | b211146e93ef83df12ebdb73cf4b7ac966b9c661 /wallet | |
parent | 005a08ea0f9558bfe92f71fa2da75c0493e61b69 (diff) | |
download | taler-android-79d52ac4960e99d7b67f6435b03b010ed536e161.tar.gz taler-android-79d52ac4960e99d7b67f6435b03b010ed536e161.tar.bz2 taler-android-79d52ac4960e99d7b67f6435b03b010ed536e161.zip |
[wallet] Improve selecting transaction after bank withdrawal
Diffstat (limited to 'wallet')
-rw-r--r-- | wallet/src/main/java/net/taler/wallet/transactions/TransactionManager.kt | 23 | ||||
-rw-r--r-- | wallet/src/main/java/net/taler/wallet/withdraw/PromptWithdrawFragment.kt | 5 |
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) |