diff options
author | Iván Ávalos <avalos@disroot.org> | 2023-06-20 20:07:42 -0600 |
---|---|---|
committer | Torsten Grote <t@grobox.de> | 2023-07-11 10:31:26 -0300 |
commit | 298dfb31b8e53b999c7983fa9ac0a2bf154f42bd (patch) | |
tree | 5cc02e45feb075fbe182b48b273184a1083a5989 /wallet/src/main/java/net/taler/wallet/transactions | |
parent | b62bd90f86f6fc4ba9e1971df4818a65c9eedada (diff) | |
download | taler-android-298dfb31b8e53b999c7983fa9ac0a2bf154f42bd.tar.gz taler-android-298dfb31b8e53b999c7983fa9ac0a2bf154f42bd.tar.bz2 taler-android-298dfb31b8e53b999c7983fa9ac0a2bf154f42bd.zip |
[wallet] Better error handling for tx actions.
Diffstat (limited to 'wallet/src/main/java/net/taler/wallet/transactions')
3 files changed, 41 insertions, 21 deletions
diff --git a/wallet/src/main/java/net/taler/wallet/transactions/TransactionDetailFragment.kt b/wallet/src/main/java/net/taler/wallet/transactions/TransactionDetailFragment.kt index b0f5e1b..d18d525 100644 --- a/wallet/src/main/java/net/taler/wallet/transactions/TransactionDetailFragment.kt +++ b/wallet/src/main/java/net/taler/wallet/transactions/TransactionDetailFragment.kt @@ -17,6 +17,7 @@ package net.taler.wallet.transactions import android.os.Bundle +import android.util.Log import android.view.Menu import android.view.MenuInflater import android.view.MenuItem @@ -26,6 +27,7 @@ import androidx.navigation.fragment.findNavController import com.google.android.material.dialog.MaterialAlertDialogBuilder import net.taler.wallet.MainViewModel import net.taler.wallet.R +import net.taler.wallet.TAG import net.taler.wallet.transactions.TransactionAction.* abstract class TransactionDetailFragment : Fragment() { @@ -111,27 +113,39 @@ abstract class TransactionDetailFragment : Fragment() { } private fun deleteTransaction(t: Transaction) { - transactionManager.deleteTransaction(t.transactionId) + transactionManager.deleteTransaction(t.transactionId) { + Log.e(TAG, "Error deleteTransaction $it") + } findNavController().popBackStack() } private fun retryTransaction(t: Transaction) { - transactionManager.retryTransaction(t.transactionId) + transactionManager.retryTransaction(t.transactionId) { + Log.e(TAG, "Error retryTransaction $it") + } } private fun abortTransaction(t: Transaction) { - transactionManager.abortTransaction(t.transactionId) + transactionManager.abortTransaction(t.transactionId) { + Log.e(TAG, "Error abortTransaction $it") + } } private fun failTransaction(t: Transaction) { - transactionManager.failTransaction(t.transactionId) + transactionManager.failTransaction(t.transactionId) { + Log.e(TAG, "Error failTransaction $it") + } } private fun suspendTransaction(t: Transaction) { - transactionManager.suspendTransaction(t.transactionId) + transactionManager.suspendTransaction(t.transactionId) { + Log.e(TAG, "Error suspendTransaction $it") + } } private fun resumeTransaction(t: Transaction) { - transactionManager.resumeTransaction(t.transactionId) + transactionManager.resumeTransaction(t.transactionId) { + Log.e(TAG, "Error resumeTransaction $it") + } } } 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 725f2c5..ffaccc6 100644 --- a/wallet/src/main/java/net/taler/wallet/transactions/TransactionManager.kt +++ b/wallet/src/main/java/net/taler/wallet/transactions/TransactionManager.kt @@ -128,73 +128,75 @@ class TransactionManager( mSelectedTransaction.postValue(transaction) } - fun deleteTransaction(transactionId: String) = scope.launch { + fun deleteTransaction(transactionId: String, onError: (it: TalerErrorInfo) -> Unit) = scope.launch { api.request<Unit>("deleteTransaction") { put("transactionId", transactionId) }.onError { - Log.e(TAG, "Error deleteTransaction $it") + onError(it) }.onSuccess { // re-load transactions as our list is stale otherwise loadTransactions() } } - fun retryTransaction(transactionId: String) = scope.launch { + fun retryTransaction(transactionId: String, onError: (it: TalerErrorInfo) -> Unit) = scope.launch { api.request<Unit>("retryTransaction") { put("transactionId", transactionId) }.onError { - Log.e(TAG, "Error retryTransaction $it") + onError(it) }.onSuccess { loadTransactions() } } - fun abortTransaction(transactionId: String) = scope.launch { + fun abortTransaction(transactionId: String, onError: (it: TalerErrorInfo) -> Unit) = scope.launch { api.request<Unit>("abortTransaction") { put("transactionId", transactionId) }.onError { - Log.e(TAG, "Error abortTransaction $it") + onError(it) }.onSuccess { loadTransactions() } } - fun failTransaction(transactionId: String) = scope.launch { + fun failTransaction(transactionId: String, onError: (it: TalerErrorInfo) -> Unit) = scope.launch { api.request<Unit>("failTransaction") { put("transactionId", transactionId) }.onError { - Log.e(TAG, "Error failTransaction $it") + onError(it) }.onSuccess { loadTransactions() } } - fun suspendTransaction(transactionId: String) = scope.launch { + fun suspendTransaction(transactionId: String, onError: (it: TalerErrorInfo) -> Unit) = scope.launch { api.request<Unit>("suspendTransaction") { put("transactionId", transactionId) }.onError { - Log.e(TAG, "Error suspendTransaction $it") + onError(it) }.onSuccess { loadTransactions() } } - fun resumeTransaction(transactionId: String) = scope.launch { + fun resumeTransaction(transactionId: String, onError: (it: TalerErrorInfo) -> Unit) = scope.launch { api.request<Unit>("resumeTransaction") { put("transactionId", transactionId) }.onError { - Log.e(TAG, "Error resumeTransaction $it") + onError(it) }.onSuccess { loadTransactions() } } - fun deleteTransactions(transactionIds: List<String>) { + fun deleteTransactions(transactionIds: List<String>, onError: (it: TalerErrorInfo) -> Unit) { allTransactions[selectedCurrency]?.filter { transaction -> transaction.transactionId in transactionIds }?.forEach { toBeDeletedTx -> if (Delete in toBeDeletedTx.txActions) { - deleteTransaction(toBeDeletedTx.transactionId) + deleteTransaction(toBeDeletedTx.transactionId) { + onError(it) + } } } } diff --git a/wallet/src/main/java/net/taler/wallet/transactions/TransactionsFragment.kt b/wallet/src/main/java/net/taler/wallet/transactions/TransactionsFragment.kt index bc3c722..4ed5c57 100644 --- a/wallet/src/main/java/net/taler/wallet/transactions/TransactionsFragment.kt +++ b/wallet/src/main/java/net/taler/wallet/transactions/TransactionsFragment.kt @@ -17,6 +17,7 @@ package net.taler.wallet.transactions import android.os.Bundle +import android.util.Log import android.view.ActionMode import android.view.LayoutInflater import android.view.Menu @@ -41,6 +42,7 @@ import net.taler.common.fadeIn import net.taler.common.fadeOut import net.taler.wallet.MainViewModel import net.taler.wallet.R +import net.taler.wallet.TAG import net.taler.wallet.databinding.FragmentTransactionsBinding import net.taler.wallet.handleKyc import net.taler.wallet.launchInAppBrowser @@ -246,7 +248,9 @@ class TransactionsFragment : Fragment(), OnTransactionClickListener, ActionMode. dialog.cancel() } .setNegativeButton(R.string.transactions_delete) { dialog, _ -> - transactionManager.deleteTransactions(transactionIds) + transactionManager.deleteTransactions(transactionIds) { + Log.e(TAG, "Error deleteTransaction $it") + } dialog.dismiss() } .show() |