diff options
author | Florian Dold <florian@dold.me> | 2024-06-10 14:39:17 +0200 |
---|---|---|
committer | Florian Dold <florian@dold.me> | 2024-06-10 14:39:17 +0200 |
commit | ccdc69ac4941188eb3d63947f6031a7a1cc6c6af (patch) | |
tree | a74d6982bf149d56ae1ffca46574424506491fb7 /packages/taler-wallet-core/src/pay-merchant.ts | |
parent | b36a1cb508fc1dd5421dc92221d25a115c0f3eab (diff) | |
download | wallet-core-ccdc69ac4941188eb3d63947f6031a7a1cc6c6af.tar.xz |
wallet-core: report 'retry' as part of transaction actions where applicable
Diffstat (limited to 'packages/taler-wallet-core/src/pay-merchant.ts')
-rw-r--r-- | packages/taler-wallet-core/src/pay-merchant.ts | 57 |
1 files changed, 45 insertions, 12 deletions
diff --git a/packages/taler-wallet-core/src/pay-merchant.ts b/packages/taler-wallet-core/src/pay-merchant.ts index 41e1b3c9e..91ea4bd1d 100644 --- a/packages/taler-wallet-core/src/pay-merchant.ts +++ b/packages/taler-wallet-core/src/pay-merchant.ts @@ -34,7 +34,6 @@ import { assertUnreachable, AsyncFlag, checkDbInvariant, - CheckPaymentResponse, CheckPayTemplateReponse, CheckPayTemplateRequest, codecForAbortResponse, @@ -1027,11 +1026,17 @@ async function storeFirstPaySuccess( purchase.merchantPaySig = payResponse.sig; purchase.posConfirmation = payResponse.pos_confirmation; const dl = purchase.download; - checkDbInvariant(!!dl, `purchase ${purchase.orderId} without ct downloaded`); + checkDbInvariant( + !!dl, + `purchase ${purchase.orderId} without ct downloaded`, + ); const contractTermsRecord = await tx.contractTerms.get( dl.contractTermsHash, ); - checkDbInvariant(!!contractTermsRecord, `no contract terms found for purchase ${purchase.orderId}`); + checkDbInvariant( + !!contractTermsRecord, + `no contract terms found for purchase ${purchase.orderId}`, + ); const contractData = extractContractData( contractTermsRecord.contractTermsRaw, dl.contractTermsHash, @@ -2650,21 +2655,45 @@ export function computePayMerchantTransactionActions( switch (purchaseRecord.purchaseStatus) { // Pending States case PurchaseStatus.PendingDownloadingProposal: - return [TransactionAction.Suspend, TransactionAction.Abort]; + return [ + TransactionAction.Retry, + TransactionAction.Suspend, + TransactionAction.Abort, + ]; case PurchaseStatus.PendingPaying: - return [TransactionAction.Suspend, TransactionAction.Abort]; + return [ + TransactionAction.Retry, + TransactionAction.Suspend, + TransactionAction.Abort, + ]; case PurchaseStatus.PendingPayingReplay: // Special "abort" since it goes back to "done". - return [TransactionAction.Suspend, TransactionAction.Abort]; + return [ + TransactionAction.Retry, + TransactionAction.Suspend, + TransactionAction.Abort, + ]; case PurchaseStatus.PendingQueryingAutoRefund: // Special "abort" since it goes back to "done". - return [TransactionAction.Suspend, TransactionAction.Abort]; + return [ + TransactionAction.Retry, + TransactionAction.Suspend, + TransactionAction.Abort, + ]; case PurchaseStatus.PendingQueryingRefund: // Special "abort" since it goes back to "done". - return [TransactionAction.Suspend, TransactionAction.Abort]; + return [ + TransactionAction.Retry, + TransactionAction.Suspend, + TransactionAction.Abort, + ]; case PurchaseStatus.PendingAcceptRefund: // Special "abort" since it goes back to "done". - return [TransactionAction.Suspend, TransactionAction.Abort]; + return [ + TransactionAction.Retry, + TransactionAction.Suspend, + TransactionAction.Abort, + ]; // Suspended Pending States case PurchaseStatus.SuspendedDownloadingProposal: return [TransactionAction.Resume, TransactionAction.Abort]; @@ -2684,14 +2713,18 @@ export function computePayMerchantTransactionActions( return [TransactionAction.Resume, TransactionAction.Abort]; // Aborting States case PurchaseStatus.AbortingWithRefund: - return [TransactionAction.Fail, TransactionAction.Suspend]; + return [ + TransactionAction.Retry, + TransactionAction.Fail, + TransactionAction.Suspend, + ]; case PurchaseStatus.SuspendedAbortingWithRefund: return [TransactionAction.Fail, TransactionAction.Resume]; // Dialog States case PurchaseStatus.DialogProposed: - return []; + return [TransactionAction.Retry]; case PurchaseStatus.DialogShared: - return []; + return [TransactionAction.Retry]; // Final States case PurchaseStatus.AbortedProposalRefused: case PurchaseStatus.AbortedOrderDeleted: |