diff options
author | Florian Dold <florian@dold.me> | 2024-04-08 22:29:51 +0200 |
---|---|---|
committer | Florian Dold <florian@dold.me> | 2024-04-08 22:29:51 +0200 |
commit | 859d5c56c7a5b26e741254d6d1e9c5731a787ae1 (patch) | |
tree | 55a45b686974318b0a8bb63f307ade0830e7c0e3 /packages/taler-util | |
parent | 30dea85f1e2410f974f8c16e4e53d4ba1290442d (diff) | |
download | wallet-core-859d5c56c7a5b26e741254d6d1e9c5731a787ae1.tar.xz |
wallet-core: support cancellation for getWithdrawalDetailsForAmount
Diffstat (limited to 'packages/taler-util')
-rw-r--r-- | packages/taler-util/src/errors.ts | 8 | ||||
-rw-r--r-- | packages/taler-util/src/taler-error-codes.ts | 8 | ||||
-rw-r--r-- | packages/taler-util/src/wallet-types.ts | 13 |
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 { |