diff options
Diffstat (limited to 'wallet/src/main/java/net/taler/wallet/transactions/TransactionManager.kt')
-rw-r--r-- | wallet/src/main/java/net/taler/wallet/transactions/TransactionManager.kt | 20 |
1 files changed, 17 insertions, 3 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 dfe25ad..725f2c5 100644 --- a/wallet/src/main/java/net/taler/wallet/transactions/TransactionManager.kt +++ b/wallet/src/main/java/net/taler/wallet/transactions/TransactionManager.kt @@ -26,6 +26,7 @@ import kotlinx.coroutines.launch import net.taler.wallet.TAG import net.taler.wallet.backend.TalerErrorInfo import net.taler.wallet.backend.WalletBackendApi +import net.taler.wallet.transactions.TransactionAction.Delete import net.taler.wallet.transactions.TransactionMajorState.Pending import java.util.LinkedList @@ -158,6 +159,16 @@ class TransactionManager( } } + fun failTransaction(transactionId: String) = scope.launch { + api.request<Unit>("failTransaction") { + put("transactionId", transactionId) + }.onError { + Log.e(TAG, "Error failTransaction $it") + }.onSuccess { + loadTransactions() + } + } + fun suspendTransaction(transactionId: String) = scope.launch { api.request<Unit>("suspendTransaction") { put("transactionId", transactionId) @@ -179,9 +190,12 @@ class TransactionManager( } fun deleteTransactions(transactionIds: List<String>) { - // TODO: do NOT delete non-deletable transactions - transactionIds.forEach { id -> - deleteTransaction(id) + allTransactions[selectedCurrency]?.filter { transaction -> + transaction.transactionId in transactionIds + }?.forEach { toBeDeletedTx -> + if (Delete in toBeDeletedTx.txActions) { + deleteTransaction(toBeDeletedTx.transactionId) + } } } |