diff options
Diffstat (limited to 'packages')
-rw-r--r-- | packages/taler-util/src/taler-types.ts | 11 | ||||
-rw-r--r-- | packages/taler-wallet-core/src/withdraw.ts | 10 |
2 files changed, 20 insertions, 1 deletions
diff --git a/packages/taler-util/src/taler-types.ts b/packages/taler-util/src/taler-types.ts index 4a0c53a79..fe8f47e30 100644 --- a/packages/taler-util/src/taler-types.ts +++ b/packages/taler-util/src/taler-types.ts @@ -977,6 +977,8 @@ export class CheckPaymentResponse { * Response from the bank. */ export class WithdrawOperationStatusResponse { + status: "selected" | "aborted" | "confirmed" | "pending"; + selection_done: boolean; transfer_done: boolean; @@ -1573,6 +1575,15 @@ export const codecForCheckPaymentResponse = (): Codec<CheckPaymentResponse> => export const codecForWithdrawOperationStatusResponse = (): Codec<WithdrawOperationStatusResponse> => buildCodecForObject<WithdrawOperationStatusResponse>() + .property( + "status", + codecForEither( + codecForConstString("selected"), + codecForConstString("confirmed"), + codecForConstString("aborted"), + codecForConstString("pending"), + ), + ) .property("selection_done", codecForBoolean()) .property("transfer_done", codecForBoolean()) .property("aborted", codecForBoolean()) diff --git a/packages/taler-wallet-core/src/withdraw.ts b/packages/taler-wallet-core/src/withdraw.ts index 2e05f1221..3f4b3ef70 100644 --- a/packages/taler-wallet-core/src/withdraw.ts +++ b/packages/taler-wallet-core/src/withdraw.ts @@ -2262,17 +2262,25 @@ async function processReserveBankStatus( `withdrawal-operation/${uriResult.withdrawalOperationId}`, uriResult.bankIntegrationApiBaseUrl, ); - url.searchParams.set("timeout_ms", "30000"); + url.searchParams.set("long_poll_ms", "30000"); + logger.info(`long-polling for withdrawal operation at ${url.href}`); const statusResp = await ws.http.fetch(url.href, { timeout: getReserveRequestTimeout(withdrawalGroup), }); + logger.info( + `long-polling for withdrawal operation returned status ${statusResp.status}`, + ); const status = await readSuccessResponseJsonOrThrow( statusResp, codecForWithdrawOperationStatusResponse(), ); + if (logger.shouldLogTrace()) { + logger.trace(`response body: ${j2s(status)}`); + } + if (status.aborted) { return transitionBankAborted(ctx); } |