From 3999dd3012e22fcb967b973a5d1d5ce0e214b490 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=83=AA=E3=82=AD=E8=90=8C?= Date: Wed, 10 Sep 2025 16:10:27 +0200 Subject: [PATCH] fix disconnect screen taking precedence over error screen closes #68 --- static/index.js | 4 ++++ static/session.js | 5 ++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/static/index.js b/static/index.js index 0e3750a..856c4aa 100644 --- a/static/index.js +++ b/static/index.js @@ -98,6 +98,10 @@ function readUrl(urlString) { }, async onDisconnect() { + if (session.errored) return; // Display the error screen + + console.info("showing disconnected refresh screen"); + let duration = 5000 + Math.random() * 1000; while (true) { console.info("waiting a bit for the server to come back up", duration); diff --git a/static/session.js b/static/session.js index d24c5a7..443a8d8 100644 --- a/static/session.js +++ b/static/session.js @@ -81,6 +81,7 @@ class Session extends EventTarget { super(); this.userId = userId; this.secret = secret; + this.errored = false; } async #recvJson() { @@ -106,6 +107,7 @@ class Session extends EventTarget { } #dispatchError(source, kind, message) { + this.errored = true; this.dispatchEvent( Object.assign(new Event("error"), { source, @@ -123,7 +125,7 @@ class Session extends EventTarget { this.ws.addEventListener("error", (event) => { console.error("WebSocket connection error", error); - this.dispatchEvent(Object.assign(new Event("error"), event)); + this.#dispatchError(event, "ws", "WebSocket connection error"); }); this.ws.addEventListener("message", (event) => { @@ -288,6 +290,7 @@ class Session extends EventTarget { } sendViewport({ left, top, right, bottom }) { + console.trace({ left, top, right, bottom }); this.#sendJson({ request: "viewport", topLeft: { x: left, y: top },