/** * Set page action icon and context menu * * @param {int} tab.id * @param {int} -1: disable icon; */ function setMenuAndIcon( id, code ) { let icon = ""; if ( code == -1 ) { browser.pageAction.hide( id ); menu.Update( "tempread" ); } else { icon = "-enable"; browser.pageAction.show( id ); storage.option.menu.read === true && menu.Create( "read" ); menu.Update( "read" ); } browser.pageAction.setIcon({ tabId: id, path: browser.extension.getURL( `assets/images/icon16${icon}.png` ) }); }
browser.runtime.onMessage.addListener( function( request, sender, sendResponse ) { console.log( "background runtime Listener", request ); switch ( request.type ) { case msg.MESSAGE_ACTION.shortcuts: getCurTab( { url: request.value.url }, tabs => { browser.tabs.sendMessage( tabs[0].id, msg.Add( msg.MESSAGE_ACTION.shortcuts )); }); break; case msg.MESSAGE_ACTION.browser_action: getCurTab( { url: request.value.url }, tabs => { if ( tabs && tabs.length > 0 && tabs[0].url == request.value.url ) { setMenuAndIcon( tabs[0].id, request.value.code ); } else console.error( request ); }); break; case msg.MESSAGE_ACTION.new_tab: browser.tabs.create({ url: request.value.url }); break; case msg.MESSAGE_ACTION.menu: const { id, value } = request.value; // hack code refresh options menu changed, and not saved storage storage.option.menu[id] = value; value === true ? menu.Create( id ) : menu.Remove( id ); break; case msg.MESSAGE_ACTION.updated: watch.Push( request.value.type, request.value.value ); break; case msg.MESSAGE_ACTION.save_verify: sendResponse( watch.Lock( request.value.url )); break; case msg.MESSAGE_ACTION.auth: browser.tabs.create({ url: browser.extension.getURL( "options/options.html#labs?auth=" + request.value.name.toLowerCase() ) }); break; case msg.MESSAGE_ACTION.auth_success: getCurTab( { url: request.value.url }, tabs => { if ( tabs && tabs.length > 0 ) { chrome.tabs.remove( tabs[0].id ); getCurTab( { "active": true }, tabs => { tabs.forEach( tab => browser.tabs.sendMessage( tab.id, msg.Add( msg.MESSAGE_ACTION.export, {type: request.value.name.toLowerCase()} )) ); }); } }); break; } });