aboutsummaryrefslogtreecommitdiff
path: root/packages/taler-util
diff options
context:
space:
mode:
authorFlorian Dold <florian@dold.me>2024-04-08 22:29:51 +0200
committerFlorian Dold <florian@dold.me>2024-04-08 22:29:51 +0200
commit859d5c56c7a5b26e741254d6d1e9c5731a787ae1 (patch)
tree55a45b686974318b0a8bb63f307ade0830e7c0e3 /packages/taler-util
parent30dea85f1e2410f974f8c16e4e53d4ba1290442d (diff)
downloadwallet-core-859d5c56c7a5b26e741254d6d1e9c5731a787ae1.tar.xz
wallet-core: support cancellation for getWithdrawalDetailsForAmount
Diffstat (limited to 'packages/taler-util')
-rw-r--r--packages/taler-util/src/errors.ts8
-rw-r--r--packages/taler-util/src/taler-error-codes.ts8
-rw-r--r--packages/taler-util/src/wallet-types.ts13
3 files changed, 29 insertions, 0 deletions
diff --git a/packages/taler-util/src/errors.ts b/packages/taler-util/src/errors.ts
index 11f01a3fe..4dea7e1b6 100644
--- a/packages/taler-util/src/errors.ts
+++ b/packages/taler-util/src/errors.ts
@@ -25,6 +25,7 @@
*/
import {
AbsoluteTime,
+ CancellationToken,
PaymentInsufficientBalanceDetails,
TalerErrorCode,
TalerErrorDetail,
@@ -285,6 +286,13 @@ export function getErrorDetailFromException(e: any): TalerErrorDetail {
if (e instanceof TalerError) {
return e.errorDetail;
}
+ if (e instanceof CancellationToken.CancellationError) {
+ const err = makeErrorDetail(
+ TalerErrorCode.WALLET_CORE_REQUEST_CANCELLED,
+ {},
+ );
+ return err;
+ }
if (e instanceof Error) {
const err = makeErrorDetail(
TalerErrorCode.WALLET_UNEXPECTED_EXCEPTION,
diff --git a/packages/taler-util/src/taler-error-codes.ts b/packages/taler-util/src/taler-error-codes.ts
index addb1b047..c3c008a1c 100644
--- a/packages/taler-util/src/taler-error-codes.ts
+++ b/packages/taler-util/src/taler-error-codes.ts
@@ -3945,6 +3945,14 @@ export enum TalerErrorCode {
/**
+ * A wallet-core request was cancelled and thus can't provide a response.
+ * Returned with an HTTP status code of #MHD_HTTP_UNINITIALIZED (0).
+ * (A value of 0 indicates that the error is generated client-side).
+ */
+ WALLET_CORE_REQUEST_CANCELLED = 7036,
+
+
+ /**
* We encountered a timeout with our payment backend.
* Returned with an HTTP status code of #MHD_HTTP_GATEWAY_TIMEOUT (504).
* (A value of 0 indicates that the error is generated client-side).
diff --git a/packages/taler-util/src/wallet-types.ts b/packages/taler-util/src/wallet-types.ts
index 34d91d3d6..fa0f385b7 100644
--- a/packages/taler-util/src/wallet-types.ts
+++ b/packages/taler-util/src/wallet-types.ts
@@ -1857,6 +1857,19 @@ export interface GetWithdrawalDetailsForAmountRequest {
exchangeBaseUrl: string;
amount: AmountString;
restrictAge?: number;
+
+ /**
+ * ID provided by the client to cancel the request.
+ *
+ * If the same request is made again with the same clientCancellationId,
+ * all previous requests are cancelled.
+ *
+ * The cancelled request will receive an error response with
+ * an error code that indicates the cancellation.
+ *
+ * The cancellation is best-effort, responses might still arrive.
+ */
+ clientCancellationId?: string;
}
export interface AcceptBankIntegratedWithdrawalRequest {