"use strict"; import defaultOptions from "./options/defaultOptions"; import messageRouter from "./messageRouter"; const _ = browser.i18n.getMessage; browser.runtime.onInstalled.addListener(async details => { switch (details.reason) { // Set default options case "install": await browser.storage.sync.set({ options: defaultOptions }); break; // Set newly added options case "update": const { options } = await browser.storage.sync.get("options"); const newOptions = {}; // Find options not already in storage for (const [ key, val ] of Object.entries(defaultOptions)) { if (!options.hasOwnProperty(key)) { newOptions[key] = val; } } // Update storage with default values of new options await browser.storage.sync.set({ options: { ...options , ...newOptions } }); break; } // Call after default options have been set createMenus(); }); // Menu IDs let mirrorCastMenuId; let mediaCastMenuId; const mediaCastTargetUrlPatterns = new Set([ "http://*/*" , "https://*/*" ]); const LOCAL_MEDIA_URL_PATTERN = "file://*/*"; async function createMenus () { const { options } = await browser.storage.sync.get("options"); /** * If options aren't set or menus have already been * created, return. */ if (!options || mirrorCastMenuId || mediaCastMenuId) return; if (options.option_localMediaEnabled) { mediaCastTargetUrlPatterns.add(LOCAL_MEDIA_URL_PATTERN); } //