commit e0c21a8694ba1f18b5940fc9ce776cd233610418
parent a4d0ad4274c79803f75d53a3642cec163ccf4e53
Author: Florian Dold <florian@dold.me>
Date: Mon, 19 Feb 2024 23:46:12 +0100
wallet-core: fix long-polling request parameter
Diffstat:
2 files changed, 20 insertions(+), 1 deletion(-)
diff --git 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
@@ -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);
}