@@ -8,8 +8,6 @@ import "@material/web/icon/icon.js";
88import { ArgoArchiveList } from "./argo-archive-list" ;
99import { Downloader } from "./sw/downloader" ;
1010
11- import wrRec from "./assets/icons/recLogo.svg" ;
12-
1311import {
1412 getLocalOption ,
1513 // removeLocalOption,
@@ -429,22 +427,42 @@ class ArgoViewer extends LitElement {
429427 } ) ;
430428 }
431429
432- registerMessages ( ) {
433- // @ts -expect-error - TS2339 - Property 'port' does not exist on type 'ArgoViewer'.
430+ private connectPort ( ) {
431+ // if already connected, do nothing
432+ // @ts -expect-error
433+ if ( this . port ) return ;
434+ // @ts -expect-error
434435 this . port = chrome . runtime . connect ( { name : "sidepanel-port" } ) ;
436+ // @ts -expect-error
437+ this . port . onMessage . addListener ( ( msg ) => this . onMessage ( msg ) ) ;
438+ // @ts -expect-error
439+ this . port . onDisconnect . addListener ( ( ) => {
440+ // clear so next sendMessage() will reconnect
441+ console . warn ( "Port disconnected, will reconnect on next send." ) ;
442+ // @ts -expect-error
443+ this . port = null ;
444+ } ) ;
445+ }
435446
447+ registerMessages ( ) {
448+ this . connectPort ( ) ;
436449 this . updateTabInfo ( ) ;
437-
438- // @ts -expect-error - TS2339 - Property 'port' does not exist on type 'ArgoViewer'.
439- this . port . onMessage . addListener ( ( message ) => {
440- this . onMessage ( message ) ;
441- } ) ;
442450 }
443451
444- // @ts -expect-error - TS7006 - Parameter 'message' implicitly has an 'any' type.
445- sendMessage ( message ) {
446- // @ts -expect-error - TS2339 - Property 'port' does not exist on type 'ArgoViewer'.
447- this . port . postMessage ( message ) ;
452+ private sendMessage ( message : any ) {
453+ // reconnect if needed
454+ // @ts -expect-error
455+ if ( ! this . port ) this . connectPort ( ) ;
456+ try {
457+ // @ts -expect-error
458+ this . port ! . postMessage ( message ) ;
459+ } catch ( e ) {
460+ console . warn (
461+ "Port died while sending, retrying via chrome.runtime.sendMessage" ,
462+ e ,
463+ ) ;
464+ chrome . runtime . sendMessage ( message ) ;
465+ }
448466 }
449467 // @ts -expect-error - TS7006 - Parameter 'message' implicitly has an 'any' type.
450468 async onMessage ( message ) {
0 commit comments