summaryrefslogtreecommitdiff
path: root/wallet/src/main/java/net/taler/wallet/transactions
diff options
context:
space:
mode:
authorIván Ávalos <avalos@disroot.org>2023-06-20 20:07:42 -0600
committerTorsten Grote <t@grobox.de>2023-07-11 10:31:26 -0300
commit298dfb31b8e53b999c7983fa9ac0a2bf154f42bd (patch)
tree5cc02e45feb075fbe182b48b273184a1083a5989 /wallet/src/main/java/net/taler/wallet/transactions
parentb62bd90f86f6fc4ba9e1971df4818a65c9eedada (diff)
downloadtaler-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')
-rw-r--r--wallet/src/main/java/net/taler/wallet/transactions/TransactionDetailFragment.kt26
-rw-r--r--wallet/src/main/java/net/taler/wallet/transactions/TransactionManager.kt30
-rw-r--r--wallet/src/main/java/net/taler/wallet/transactions/TransactionsFragment.kt6
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()