taler-typescript-core

Wallet core logic and WebUIs for various components
Log | Files | Refs | Submodules | README | LICENSE

commit f7dbd4459a177e9614dbfbad4d1e18e028c8ef08
parent 181b200d8595f0040b4e142c44110dd03523808f
Author: Sebastian <sebasjm@gmail.com>
Date:   Tue, 19 Dec 2023 10:14:36 -0300

fix :long polling request parameter

Diffstat:
Mpackages/merchant-backend-ui/src/declaration.d.ts | 4+++-
Mpackages/merchant-backend-ui/src/pages/OfferRefund.tsx | 4+++-
Mpackages/merchant-backend-ui/src/pages/OfferTip.tsx | 4+++-
Mpackages/merchant-backend-ui/src/pages/RequestPayment.tsx | 9+++++----
Mpackages/merchant-backend-ui/src/pages/ShowOrderDetails.examples.ts | 16++++++++--------
5 files changed, 22 insertions(+), 15 deletions(-)

diff --git a/packages/merchant-backend-ui/src/declaration.d.ts b/packages/merchant-backend-ui/src/declaration.d.ts @@ -50,7 +50,9 @@ interface WithId { type Amount = string; type UUID = string; type Integer = number; - +type TalerProtocolTimestamp = { + t_s: number | "never" +} export namespace ExchangeBackend { interface WireResponse { diff --git a/packages/merchant-backend-ui/src/pages/OfferRefund.tsx b/packages/merchant-backend-ui/src/pages/OfferRefund.tsx @@ -61,6 +61,8 @@ function Head({ order_summary }: { order_summary?: string }): VNode { export function OfferRefund({ refundURI, qr_code, order_status_url }: Props): VNode { useEffect(() => { + const longpollDelayMs = 60 * 1000; + const delayMs = 500; let checkUrl: URL; try { checkUrl = new URL(order_status_url ? order_status_url : "{{& order_status_url }}"); @@ -68,7 +70,7 @@ export function OfferRefund({ refundURI, qr_code, order_status_url }: Props): VN return; } checkUrl.searchParams.set("await_refund_obtained", "yes"); - const delayMs = 500; + checkUrl.searchParams.set("timeout_ms", longpollDelayMs.toString()); function check() { let retried = false; function retryOnce() { diff --git a/packages/merchant-backend-ui/src/pages/OfferTip.tsx b/packages/merchant-backend-ui/src/pages/OfferTip.tsx @@ -62,14 +62,16 @@ export function Head(): VNode { export function OfferTip({ tipURI, qr_code, tip_status_url }: Props): VNode { useEffect(() => { + const longpollDelayMs = 60 * 1000; + const delayMs = 500; let checkUrl: URL; try { checkUrl = new URL(tip_status_url ? tip_status_url : "{{& tip_status_url }}"); } catch (e) { return; } + checkUrl.searchParams.set("timeout_ms", longpollDelayMs.toString()); - const delayMs = 500; function check() { let retried = false; function retryOnce() { diff --git a/packages/merchant-backend-ui/src/pages/RequestPayment.tsx b/packages/merchant-backend-ui/src/pages/RequestPayment.tsx @@ -82,6 +82,7 @@ export function RequestPayment({ return; } checkUrl.searchParams.set("timeout_s", longpollDelayMs.toString()); + const delayMs = 500; function check() { let retried = false; function retryOnce() { @@ -123,20 +124,20 @@ export function RequestPayment({ console.error("could not parse response:", e); } } - setTimeout(retryOnce, 500); + setTimeout(retryOnce, delayMs); } }; req.onerror = function () { - setTimeout(retryOnce, 500); + setTimeout(retryOnce, delayMs); }; req.ontimeout = function () { - setTimeout(retryOnce, 500); + setTimeout(retryOnce, delayMs); }; req.timeout = longpollDelayMs; req.open("GET", checkUrl.href); req.send(); } - setTimeout(check, 500); + setTimeout(check, delayMs); }); return ( <Page> diff --git a/packages/merchant-backend-ui/src/pages/ShowOrderDetails.examples.ts b/packages/merchant-backend-ui/src/pages/ShowOrderDetails.examples.ts @@ -28,7 +28,7 @@ const defaultContractTerms: MerchantBackend.ContractTerms = { amount: 'USD:10', summary: 'this is a short summary', pay_deadline: { - t_s: new Date().getTime() + 6 * 24 * 60 * 60 * 1000 + t_s: Math.round(new Date().getTime() / 1000) + 6 * 24 * 60 * 60 }, merchant: { name: 'the merchant (inc)', @@ -48,7 +48,7 @@ const defaultContractTerms: MerchantBackend.ContractTerms = { wire_fee_amortization: 1, products: [], timestamp: { - t_s: new Date().getTime() + t_s: Math.round(new Date().getTime() / 1000) }, auditors: [], exchanges: [], @@ -57,18 +57,18 @@ const defaultContractTerms: MerchantBackend.ContractTerms = { merchant_pub: 'QWEASDQWEASD', nonce: 'NONCE', refund_deadline: { - t_s: new Date().getTime() + 6 * 24 * 60 * 60 * 1000 + t_s: Math.round(new Date().getTime() / 1000) + 6 * 24 * 60 * 60 }, wire_method: 'x-taler-bank', wire_transfer_deadline: { - t_s: new Date().getTime() + 3 * 24 * 60 * 60 * 1000 + t_s: Math.round(new Date().getTime() / 1000) + 3 * 24 * 60 * 60 }, }; -const inSixDays = new Date().getTime() + 6 * 24 * 60 * 60 * 1000 -const in10Minutes = new Date().getTime() + 10 * 60 * 1000 -const in15Minutes = new Date().getTime() + 15 * 60 * 1000 -const in20Minutes = new Date().getTime() + 20 * 60 * 1000 +const inSixDays = Math.round(new Date().getTime() / 1000) + 6 * 24 * 60 * 60 +const in10Minutes = Math.round(new Date().getTime() / 1000) + 10 * 60 +const in15Minutes = Math.round(new Date().getTime() / 1000) + 15 * 60 +const in20Minutes = Math.round(new Date().getTime() / 1000) + 20 * 60 export const exampleData: { [name: string]: Props } = { Simplest: {