diff options
author | Florian Dold <florian@dold.me> | 2021-05-17 12:47:57 +0200 |
---|---|---|
committer | Florian Dold <florian@dold.me> | 2021-05-17 12:47:57 +0200 |
commit | d972af515950c2df6b677f631db674757d74684a (patch) | |
tree | 53fdc2629897edf657fe0ef7ffffaa3d9f3c25ed /contrib/request_payment.en.must | |
parent | 5104ecf39a713f318862135628e70a5fb63fecae (diff) | |
download | merchant-d972af515950c2df6b677f631db674757d74684a.tar.gz merchant-d972af515950c2df6b677f631db674757d74684a.tar.bz2 merchant-d972af515950c2df6b677f631db674757d74684a.zip |
JS: make sure we retry only once per failed attempt
Diffstat (limited to 'contrib/request_payment.en.must')
-rw-r--r-- | contrib/request_payment.en.must | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/contrib/request_payment.en.must b/contrib/request_payment.en.must index 4223a05f..b77e8fb3 100644 --- a/contrib/request_payment.en.must +++ b/contrib/request_payment.en.must @@ -89,10 +89,17 @@ body { <body> <script> - let delayMs = 60000; + let longpollDelayMs = 60000; let checkUrl = new URL("{{& order_status_url }}"); - checkUrl.searchParams.set("timeout_ms", delayMs.toString()); + checkUrl.searchParams.set("timeout_ms", longpollDelayMs.toString()); function check() { + let retried = false; + function retryOnce() { + if (!retried) { + retried = true; + check(); + } + } let req = new XMLHttpRequest(); req.onreadystatechange = function () { if (req.readyState === XMLHttpRequest.DONE) { @@ -123,20 +130,20 @@ body { console.error("could not parse response:", e); } } - setTimeout(check, delayMs); + setTimeout(retryOnce, 500); } }; req.onerror = function () { - setTimeout(check, 5); + setTimeout(retryOnce, 500); } req.ontimeout = function () { - setTimeout(check, 5); + setTimeout(retryOnce, 500); } req.timeout = delayMs; req.open("GET", checkUrl.href); req.send(); } - setTimeout(check, 5); + setTimeout(check, 500); </script> <section id="main" class="content"> |