@@ -24,38 +24,78 @@ import events from "./webeid-events.js";
2424import log from "./webeid-log.js" ;
2525import settings from "./webeid-settings.js" ;
2626
27+ ( function connect ( ) {
28+ const backgroundConnection = chrome . runtime . connect ( {
29+ name : "webeid-devtools" ,
30+ } ) ;
2731
28- const backgroundConnection = chrome . runtime . connect ( {
29- name : "webeid-devtools" ,
30- } ) ;
32+ const keepAliveInterval = setInterval ( ( ) => {
33+ backgroundConnection . postMessage ( { devtools : "keep-alive" } ) ;
34+ } , 20000 ) ;
3135
32- backgroundConnection . onMessage . addListener ( ( message ) => {
33- if ( ! message . tabId || message . tabId === chrome . devtools . inspectedWindow . tabId ) {
34- if ( message . devtools === "log" ) {
35- log . append ( message ) ;
36- } else if ( message . devtools === "event" ) {
37- events . append ( message ) ;
36+ backgroundConnection . onDisconnect . addListener ( ( ) => {
37+ clearInterval ( keepAliveInterval ) ;
3838
39- const direction = (
40- message . type === "request"
41- ? "—►"
42- : message . type === "response"
43- ? "◄—"
44- : "?"
45- ) ;
39+ log . append ( {
40+ source : "devtools-webeid.js" ,
41+ type : "debug" ,
42+ time : new Date ( ) . toISOString ( ) . match ( / T ( ( .) * ) Z / ) [ 1 ] ,
43+ message : [
44+ "DevTools panel disconnected. Attempting to reconnect."
45+ ] ,
46+ } ) ;
47+
48+ try {
49+ connect ( ) ;
4650
4751 log . append ( {
48- time : message . time ,
49- type : "event" ,
50- source : `${ message . layer1 } ${ direction } ${ message . layer2 } ` ,
51- message : [ message . data ] ,
52+ source : "devtools-webeid.js" ,
53+ type : "debug" ,
54+ time : new Date ( ) . toISOString ( ) . match ( / T ( ( .) * ) Z / ) [ 1 ] ,
55+ message : [
56+ "DevTools panel reconnected."
57+ ] ,
5258 } ) ;
53- } else if ( message . devtools === "settings" ) {
54- const { config, defaultConfig } = message ;
55-
56- settings . render ( config , defaultConfig , backgroundConnection ) ;
57-
58- document . querySelector ( 'header .version' ) . textContent = defaultConfig . VERSION ;
59+ } catch {
60+ log . append ( {
61+ source : "devtools-webeid.js" ,
62+ type : "error" ,
63+ time : new Date ( ) . toISOString ( ) . match ( / T ( ( .) * ) Z / ) [ 1 ] ,
64+ message : [
65+ "Web eID DevTools panel disconnected from the extension. Please reopen the browser DevTools to continue."
66+ ] ,
67+ } ) ;
68+ }
69+ } ) ;
70+
71+ backgroundConnection . onMessage . addListener ( ( message ) => {
72+ if ( ! message . tabId || message . tabId === chrome . devtools . inspectedWindow . tabId ) {
73+ if ( message . devtools === "log" ) {
74+ log . append ( message ) ;
75+ } else if ( message . devtools === "event" ) {
76+ events . append ( message ) ;
77+
78+ const direction = (
79+ message . type === "request"
80+ ? "—►"
81+ : message . type === "response"
82+ ? "◄—"
83+ : "?"
84+ ) ;
85+
86+ log . append ( {
87+ time : message . time ,
88+ type : "event" ,
89+ source : `${ message . layer1 } ${ direction } ${ message . layer2 } ` ,
90+ message : [ message . data ] ,
91+ } ) ;
92+ } else if ( message . devtools === "settings" ) {
93+ const { config, defaultConfig } = message ;
94+
95+ settings . render ( config , defaultConfig , backgroundConnection ) ;
96+
97+ document . querySelector ( 'header .version' ) . textContent = defaultConfig . VERSION ;
98+ }
5999 }
60- }
61- } ) ;
100+ } ) ;
101+ } ) ( ) ;
0 commit comments