From 298dfb31b8e53b999c7983fa9ac0a2bf154f42bd Mon Sep 17 00:00:00 2001 From: Iván Ávalos Date: Tue, 20 Jun 2023 20:07:42 -0600 Subject: [wallet] Better error handling for tx actions. --- .../transactions/TransactionDetailFragment.kt | 26 ++++++++++++++----- .../wallet/transactions/TransactionManager.kt | 30 ++++++++++++---------- .../wallet/transactions/TransactionsFragment.kt | 6 ++++- 3 files changed, 41 insertions(+), 21 deletions(-) (limited to 'wallet/src/main/java/net/taler/wallet/transactions') 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("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("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("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("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("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("resumeTransaction") { put("transactionId", transactionId) }.onError { - Log.e(TAG, "Error resumeTransaction $it") + onError(it) }.onSuccess { loadTransactions() } } - fun deleteTransactions(transactionIds: List) { + fun deleteTransactions(transactionIds: List, 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() -- cgit v1.2.3