summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Dold <florian@dold.me>2024-02-19 23:46:12 +0100
committerFlorian Dold <florian@dold.me>2024-02-19 23:46:12 +0100
commite0c21a8694ba1f18b5940fc9ce776cd233610418 (patch)
treeed41296544892c9f4af93dbeeb5f2f13978bb0e8
parenta4d0ad4274c79803f75d53a3642cec163ccf4e53 (diff)
downloadwallet-core-e0c21a8694ba1f18b5940fc9ce776cd233610418.tar.gz
wallet-core-e0c21a8694ba1f18b5940fc9ce776cd233610418.tar.bz2
wallet-core-e0c21a8694ba1f18b5940fc9ce776cd233610418.zip
wallet-core: fix long-polling request parameter
-rw-r--r--packages/taler-util/src/taler-types.ts11
-rw-r--r--packages/taler-wallet-core/src/withdraw.ts10
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);
}