commit d972af515950c2df6b677f631db674757d74684a
parent 5104ecf39a713f318862135628e70a5fb63fecae
Author: Florian Dold <florian@dold.me>
Date: Mon, 17 May 2021 12:47:57 +0200
JS: make sure we retry only once per failed attempt
Diffstat:
3 files changed, 31 insertions(+), 10 deletions(-)
diff --git a/contrib/offer_refund.en.must b/contrib/offer_refund.en.must
@@ -93,6 +93,13 @@ body {
checkUrl.searchParams.set("await_refund_obtained", "yes");
let delayMs = 500;
function check() {
+ let retried = false;
+ function retryOnce() {
+ if (!retried) {
+ retried = true;
+ check();
+ }
+ }
let req = new XMLHttpRequest();
req.onreadystatechange = function () {
if (req.readyState === XMLHttpRequest.DONE) {
@@ -106,11 +113,11 @@ body {
console.error("could not parse response:", e);
}
}
- setTimeout(check, delayMs);
+ setTimeout(retryOnce, delayMs);
}
};
req.onerror = function () {
- setTimeout(check, delayMs);
+ setTimeout(retryOnce, delayMs);
}
req.open("GET", checkUrl.href);
req.send();
diff --git a/contrib/offer_tip.en.must b/contrib/offer_tip.en.must
@@ -92,17 +92,24 @@ body {
let checkUrl = "{{& tip_status_url }}";
let delayMs = 500;
function check() {
+ let retried = false;
+ function retryOnce() {
+ if (!retried) {
+ retried = true;
+ check();
+ }
+ }
let req = new XMLHttpRequest();
req.onreadystatechange = function () {
if (req.readyState === XMLHttpRequest.DONE) {
if (req.status === 410) {
window.location.reload(true);
}
- setTimeout(check, delayMs);
+ setTimeout(retryOnce, delayMs);
}
};
req.onerror = function () {
- setTimeout(check, delayMs);
+ setTimeout(retryOnce, delayMs);
}
req.open("GET", checkUrl);
req.send();
diff --git 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">