From 522df0070081143afe100940a3e93024dd5016d3 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Wed, 15 Jul 2026 02:04:08 +0100 Subject: [PATCH] Consume ordered Hermodr state events --- web/surface.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/web/surface.js b/web/surface.js index d49fca6..f5270b4 100644 --- a/web/surface.js +++ b/web/surface.js @@ -224,13 +224,16 @@ function createHermodrStateBindingResolver(providerId) { const stream = new EventSource(`/hermodr/state/${encodeURIComponent(providerId)}?${params}`); source = { stream, value: undefined, ready: [], watchers: new Set(), references: 0 }; sources.set(sourceKey, source); - stream.addEventListener("state", event => { + const acceptState = event => { const update = JSON.parse(event.data); if (update?.state === "stale" || update?.value === undefined) return; source.value = update.value; for (const resolve of source.ready.splice(0)) resolve(update.value); for (const callback of source.watchers) callback(update.value); - }); + }; + stream.addEventListener("snapshot", acceptState); + stream.addEventListener("update", acceptState); + stream.addEventListener("reconnected", acceptState); stream.addEventListener("stale", event => { const detail = JSON.parse(event.data || "{}"); statusEl.textContent = detail.message || `${providerId} state is stale`;