commit d13d465c4bdcd2462c916676ac9247fd241dbd9c parent a9c315eba0f802f092cca43ffbc50ace8a2c389e Author: Florian Dold <florian@dold.me> Date: Wed, 27 Mar 2024 20:08:23 +0100 wallet-core: implement abort for more payment states Diffstat:
| M | packages/taler-wallet-core/src/pay-merchant.ts | | | 18 | +++++++++++++----- |
1 file changed, 13 insertions(+), 5 deletions(-)
diff --git 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);