@@ -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