Skip to content

Commit 72cd27e

Browse files
committed
fix(app): keep live mode on api errors
1 parent 3db61bc commit 72cd27e

File tree

1 file changed

+35
-6
lines changed

1 file changed

+35
-6
lines changed

web/src/app.js

Lines changed: 35 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,13 @@ import {
192192
} catch (err) {
193193
const userErr = toUserError(err, "REST");
194194
setLiveError(userErr);
195-
setMode("demo", `${userErr} - running in demo mode`);
195+
if (state.mode === "live") {
196+
setWarning(`${userErr} - staying in live mode`);
197+
state.live.connected = false;
198+
setModeBadge();
199+
} else {
200+
setMode("demo", `${userErr} - running in demo mode`);
201+
}
196202
}
197203
}
198204

@@ -272,7 +278,13 @@ import {
272278
es.onerror = () => {
273279
const errText = `SSE: network/CORS blocked (${state.live.beaconUrl})`;
274280
setLiveError(errText);
275-
setMode("demo", `${errText} - running in demo mode`);
281+
if (state.mode === "live") {
282+
setWarning(`${errText} - staying in live mode`);
283+
state.live.connected = false;
284+
setModeBadge();
285+
} else {
286+
setMode("demo", `${errText} - running in demo mode`);
287+
}
276288
};
277289

278290
const bindEvent = (name) => {
@@ -288,7 +300,13 @@ import {
288300
} catch (err) {
289301
const userErr = toUserError(err, "SSE");
290302
setLiveError(userErr);
291-
setMode("demo", `${userErr} - running in demo mode`);
303+
if (state.mode === "live") {
304+
setWarning(`${userErr} - staying in live mode`);
305+
state.live.connected = false;
306+
setModeBadge();
307+
} else {
308+
setMode("demo", `${userErr} - running in demo mode`);
309+
}
292310
return;
293311
}
294312

@@ -303,8 +321,15 @@ import {
303321
if (state.mode !== "live") return;
304322
const idleFor = Date.now() - state.live.lastEventAt;
305323
if (idleFor > 20000) {
306-
setLiveError("SSE: timeout waiting for events");
307-
setMode("demo", "Live SSE timeout - running in demo mode");
324+
const errText = "SSE: timeout waiting for events";
325+
setLiveError(errText);
326+
if (state.mode === "live") {
327+
setWarning(`${errText} - staying in live mode`);
328+
state.live.connected = false;
329+
setModeBadge();
330+
} else {
331+
setMode("demo", "Live SSE timeout - running in demo mode");
332+
}
308333
}
309334
}, 5000);
310335
}
@@ -336,7 +361,7 @@ import {
336361
nodes.settingsPanel.classList.toggle("open");
337362
});
338363

339-
nodes.applySettings.addEventListener("click", () => {
364+
const applySettingsFromInputs = () => {
340365
state.live.beaconUrl = nodes.beaconInput.value.trim() || "http://localhost:5052";
341366
state.live.metricsUrl = nodes.metricsInput.value.trim() || "http://localhost:9090";
342367
state.live.apiNamespace = nodes.nsSelect.value === "eth" ? "eth" : "lean";
@@ -346,6 +371,10 @@ import {
346371

347372
const mode = nodes.modeSelect.value === "live" ? "live" : "demo";
348373
setMode(mode);
374+
};
375+
376+
nodes.applySettings.addEventListener("click", () => {
377+
applySettingsFromInputs();
349378
});
350379
}
351380

0 commit comments

Comments
 (0)