From d13d465c4bdcd2462c916676ac9247fd241dbd9c Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Wed, 27 Mar 2024 20:08:23 +0100 Subject: wallet-core: implement abort for more payment states --- packages/taler-wallet-core/src/pay-merchant.ts | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) (limited to 'packages/taler-wallet-core/src') diff --git a/packages/taler-wallet-core/src/pay-merchant.ts b/packages/taler-wallet-core/src/pay-merchant.ts index 40abd44a0..62309a300 100644 --- a/packages/taler-wallet-core/src/pay-merchant.ts +++ b/packages/taler-wallet-core/src/pay-merchant.ts @@ -284,11 +284,6 @@ export class PayMerchantTransactionContext implements TransactionContext { } const oldTxState = computePayMerchantTransactionState(purchase); const oldStatus = purchase.purchaseStatus; - if (purchase.timestampFirstSuccessfulPay) { - // No point in aborting it. We don't even report an error. - logger.warn(`tried to abort successful payment`); - return; - } switch (oldStatus) { case PurchaseStatus.Done: return; @@ -318,9 +313,22 @@ export class PayMerchantTransactionContext implements TransactionContext { } break; } + case PurchaseStatus.PendingQueryingAutoRefund: + case PurchaseStatus.SuspendedQueryingAutoRefund: + case PurchaseStatus.PendingAcceptRefund: + case PurchaseStatus.SuspendedPendingAcceptRefund: + case PurchaseStatus.PendingQueryingRefund: + case PurchaseStatus.SuspendedQueryingRefund: + if (!purchase.timestampFirstSuccessfulPay) { + throw Error("invalid state"); + } + purchase.purchaseStatus = PurchaseStatus.Done; + break; case PurchaseStatus.DialogProposed: purchase.purchaseStatus = PurchaseStatus.AbortedProposalRefused; break; + default: + return; } await tx.purchases.put(purchase); await tx.operationRetries.delete(this.taskId); -- cgit v1.2.3