@@ -302,11 +302,9 @@ async function nativeChecks() {
302302 * Make sure not to return `undefined` or `rejection`, otherwise the reply may never be delivered
303303 * @see {@link https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/runtime/onMessage#listener }
304304 * @type {Parameters<typeof browser.runtime.onMessage.addListener>[0] }
305- * @returns {Promise<{status: "pending"|"fulfilled"|"rejected", result: any}> }
305+ * @returns {Promise<{status: "pending"|"fulfilled"|"rejected", result? : any}> }
306306 */
307307async function handleMessage ( message , sender ) {
308- /** @type {Promise } */
309- let promise ;
310308 switch ( message . name ) {
311309 case "REQ_USERSCRIPTS" : {
312310 // get the page url from the content script that sent request
@@ -331,27 +329,42 @@ async function handleMessage(message, sender) {
331329 } catch ( error ) {
332330 console . error ( error ) ;
333331 // @ts -ignore -- ignore for now and will reconstruct this in the future.
334- return { error } ;
332+ return { error : String ( error ) } ;
335333 }
336334 }
337335 case "API_CLOSE_TAB" : {
338- promise = browser . tabs . remove ( message . tabId || sender . tab . id ) ;
339- break ;
336+ try {
337+ await browser . tabs . remove ( message . tabId || sender . tab . id ) ;
338+ return { status : "fulfilled" } ;
339+ } catch ( error ) {
340+ console . error ( message , sender , error ) ;
341+ return { status : "rejected" , result : String ( error ) } ;
342+ }
340343 }
341344 case "API_OPEN_TAB" : {
342- promise = browser . tabs . create ( {
343- active : message . active ,
344- index : sender . tab . index + 1 ,
345- url : message . url ,
346- } ) ;
347- break ;
345+ try {
346+ const tab = await browser . tabs . create ( {
347+ active : message . active ,
348+ index : sender . tab . index + 1 ,
349+ url : message . url ,
350+ } ) ;
351+ return { status : "fulfilled" , result : tab } ;
352+ } catch ( error ) {
353+ console . error ( message , sender , error ) ;
354+ return { status : "rejected" , result : String ( error ) } ;
355+ }
348356 }
349357 case "API_ADD_STYLE" : {
350- promise = browser . tabs . insertCSS ( sender . tab . id , {
351- code : message . css ,
352- cssOrigin : "user" ,
353- } ) ;
354- break ;
358+ try {
359+ await browser . tabs . insertCSS ( sender . tab . id , {
360+ code : message . css ,
361+ cssOrigin : "user" ,
362+ } ) ;
363+ return { status : "fulfilled" } ;
364+ } catch ( error ) {
365+ console . error ( message , sender , error ) ;
366+ return { status : "rejected" , result : String ( error ) } ;
367+ }
355368 }
356369 case "API_GET_TAB" : {
357370 if ( typeof sender . tab === "undefined" ) {
@@ -365,17 +378,17 @@ async function handleMessage(message, sender) {
365378 return { status : "fulfilled" , result : tabObj } ;
366379 } catch ( error ) {
367380 console . error ( "failed to parse tab data for getTab" , error ) ;
368- return { status : "rejected" , result : error } ;
381+ return { status : "rejected" , result : String ( error ) } ;
369382 }
370383 }
371384 case "API_SAVE_TAB" : {
372385 if ( sender . tab != null && sender . tab . id ) {
373386 const key = `tab-${ sender . tab . id } ` ;
374387 sessionStorage . setItem ( key , JSON . stringify ( message . tabObj ) ) ;
375- return { status : "fulfilled" , result : undefined } ;
388+ return { status : "fulfilled" } ;
376389 } else {
377390 const error = "unable to save tab, empty tab id" ;
378- return { status : "rejected" , result : error } ;
391+ return { status : "rejected" , result : String ( error ) } ;
379392 }
380393 }
381394 case "API_SET_CLIPBOARD" : {
@@ -481,7 +494,7 @@ async function handleMessage(message, sender) {
481494 port . postMessage ( { name : "onloadend" , event } ) ;
482495 } ;
483496 }
484- break ;
497+ return { status : "fulfilled" } ;
485498 }
486499 case "REFRESH_SESSION_RULES" : {
487500 setSessionRules ( ) ;
@@ -492,13 +505,6 @@ async function handleMessage(message, sender) {
492505 break ;
493506 }
494507 }
495- try {
496- const result = await promise ;
497- return { status : "fulfilled" , result } ;
498- } catch ( error ) {
499- console . error ( message , sender , error ) ;
500- return { status : "rejected" , result : error } ;
501- }
502508}
503509browser . runtime . onInstalled . addListener ( async ( ) => {
504510 nativeChecks ( ) ;
0 commit comments