aboutsummaryrefslogtreecommitdiff
path: root/packages
diff options
context:
space:
mode:
authorFlorian Dold <florian@dold.me>2023-01-11 14:33:35 +0100
committerFlorian Dold <florian@dold.me>2023-01-11 14:33:35 +0100
commitc3fdbd291f3d74d35f524f96ded6e3c6c85712e0 (patch)
tree9501cdb65e534df2ed45ec078b534cc556e6bdda /packages
parentafd6f48b5782c1b9c2eb682c7c29cc131026bd95 (diff)
wallet-core: introduce abortPay request
This request supersedes the abortPayWithRefund request, as that's too implementation-focused and does not describe well what's happening. Also, abortPay can be forced to transition a transaction immediately into an "aborted" state (either from "paying" or "aborting").
Diffstat (limited to 'packages')
-rw-r--r--packages/taler-util/src/wallet-types.ts10
-rw-r--r--packages/taler-wallet-core/src/wallet-api-types.ts16
-rw-r--r--packages/taler-wallet-core/src/wallet.ts2
3 files changed, 20 insertions, 8 deletions
diff --git a/packages/taler-util/src/wallet-types.ts b/packages/taler-util/src/wallet-types.ts
index 367d9c4c9..77c083e45 100644
--- a/packages/taler-util/src/wallet-types.ts
+++ b/packages/taler-util/src/wallet-types.ts
@@ -1555,12 +1555,22 @@ export const codecForAcceptTipRequest = (): Codec<AcceptTipRequest> =>
export interface AbortPayWithRefundRequest {
proposalId: string;
+
+ /**
+ * Move the payment immediately into an aborted state.
+ * The UI should warn the user that this might lead
+ * to money being lost.
+ *
+ * Defaults to false.
+ */
+ cancelImmediately?: boolean;
}
export const codecForAbortPayWithRefundRequest =
(): Codec<AbortPayWithRefundRequest> =>
buildCodecForObject<AbortPayWithRefundRequest>()
.property("proposalId", codecForString())
+ .property("cancelImmediately", codecOptional(codecForBoolean()))
.build("AbortPayWithRefundRequest");
export interface GetFeeForDepositRequest {
diff --git a/packages/taler-wallet-core/src/wallet-api-types.ts b/packages/taler-wallet-core/src/wallet-api-types.ts
index 1ea57a27d..ecabb9af0 100644
--- a/packages/taler-wallet-core/src/wallet-api-types.ts
+++ b/packages/taler-wallet-core/src/wallet-api-types.ts
@@ -24,7 +24,7 @@
* Imports.
*/
import {
- AbortPayWithRefundRequest,
+ AbortPayWithRefundRequest as AbortPayRequest,
AcceptBankIntegratedWithdrawalRequest,
AcceptExchangeTosRequest,
AcceptManualWithdrawalRequest,
@@ -150,7 +150,7 @@ export enum WalletApiOperation {
GetExchangeTos = "getExchangeTos",
GetExchangeDetailedInfo = "getExchangeDetailedInfo",
RetryPendingNow = "retryPendingNow",
- AbortFailedPayWithRefund = "abortFailedPayWithRefund",
+ AbortPay = "abortPay",
ConfirmPay = "confirmPay",
DumpCoins = "dumpCoins",
SetCoinSuspended = "setCoinSuspended",
@@ -329,11 +329,13 @@ export type ConfirmPayOp = {
};
/**
- * Abort a pending payment with a refund.
+ * Abort a pending payment.
+ * Puts the payment into an "aborting" state
+ * that can be cancelled.
*/
-export type AbortPayWithRefundOp = {
- op: WalletApiOperation.AbortFailedPayWithRefund;
- request: AbortPayWithRefundRequest;
+export type AbortPayOp = {
+ op: WalletApiOperation.AbortPay;
+ request: AbortPayRequest;
response: EmptyObject;
};
@@ -827,7 +829,7 @@ export type WalletOperations = {
[WalletApiOperation.GetContractTermsDetails]: GetContractTermsDetailsOp;
[WalletApiOperation.WithdrawTestkudos]: WithdrawTestkudosOp;
[WalletApiOperation.ConfirmPay]: ConfirmPayOp;
- [WalletApiOperation.AbortFailedPayWithRefund]: AbortPayWithRefundOp;
+ [WalletApiOperation.AbortPay]: AbortPayOp;
[WalletApiOperation.GetBalances]: GetBalancesOp;
[WalletApiOperation.GetTransactions]: GetTransactionsOp;
[WalletApiOperation.GetTransactionById]: GetTransactionByIdOp;
diff --git a/packages/taler-wallet-core/src/wallet.ts b/packages/taler-wallet-core/src/wallet.ts
index f73cdac70..b29276a75 100644
--- a/packages/taler-wallet-core/src/wallet.ts
+++ b/packages/taler-wallet-core/src/wallet.ts
@@ -1163,7 +1163,7 @@ async function dispatchRequestInternal<Op extends WalletApiOperation>(
const req = codecForConfirmPayRequest().decode(payload);
return await confirmPay(ws, req.proposalId, req.sessionId);
}
- case WalletApiOperation.AbortFailedPayWithRefund: {
+ case WalletApiOperation.AbortPay: {
const req = codecForAbortPayWithRefundRequest().decode(payload);
await abortFailedPayWithRefund(ws, req.proposalId);
return {};