Jelajahi Sumber

refactored detection of menu api

Gildas 7 tahun lalu
induk
melakukan
f2833f4cc0
1 mengubah file dengan 5 tambahan dan 4 penghapusan
  1. 5 4
      extension/ui/bg/ui.js

+ 5 - 4
extension/ui/bg/ui.js

@@ -28,6 +28,7 @@ singlefile.ui = (() => {
 	const DEFAULT_COLOR = [2, 147, 20, 255];
 	const BADGE_PROPERTIES = [{ name: "text", browserActionMethod: "setBadgeText" }, { name: "color", browserActionMethod: "setBadgeBackgroundColor" }, { name: "title", browserActionMethod: "setTitle" }, { name: "path", browserActionMethod: "setIcon" }];
 	const FORBIDDEN_URLS = ["https://chrome.google.com", "https://addons.mozilla.org"];
+	const BROWSER_MENUS_API_SUPPORTED = browser.menus && browser.menus.onClicked && browser.menus.create && browser.menus.update && browser.menus.removeAll;
 	const MENU_ID_SAVE_PAGE = "save-page";
 	const MENU_ID_SAVE_SELECTED = "save-selected";
 	const MENU_ID_SAVE_FRAME = "save-frame";
@@ -45,7 +46,7 @@ singlefile.ui = (() => {
 	getPersistentTabsData().then(tabsData => persistentTabsData = tabsData);
 
 	browser.runtime.onInstalled.addListener(refreshContextMenu);
-	if (browser.menus && browser.menus.onClicked) {
+	if (BROWSER_MENUS_API_SUPPORTED) {
 		browser.menus.onClicked.addListener(async (event, tab) => {
 			if (event.menuItemId == MENU_ID_SAVE_PAGE) {
 				processTab(tab);
@@ -141,7 +142,7 @@ singlefile.ui = (() => {
 
 	async function refreshContextMenu() {
 		const config = await singlefile.config.get();
-		if (browser.menus && browser.menus.removeAll && browser.menus.create) {
+		if (BROWSER_MENUS_API_SUPPORTED) {
 			if (config.contextMenuEnabled) {
 				await browser.menus.removeAll();
 				browser.menus.create({
@@ -220,7 +221,7 @@ singlefile.ui = (() => {
 
 	async function refreshContextMenuState(tab) {
 		const tabsData = await getPersistentTabsData();
-		if (browser.menus && browser.menus.update) {
+		if (BROWSER_MENUS_API_SUPPORTED) {
 			await browser.menus.update(MENU_ID_AUTO_SAVE_DISABLED, { checked: Boolean(!tabsData[tab.id] || !tabsData[tab.id].autoSave) });
 			await browser.menus.update(MENU_ID_AUTO_SAVE_TAB, { checked: Boolean(tabsData[tab.id] && tabsData[tab.id].autoSave) });
 			await browser.menus.update(MENU_ID_AUTO_SAVE_UNPINNED, { checked: Boolean(tabsData.autoSaveUnpinned) });
@@ -350,7 +351,7 @@ singlefile.ui = (() => {
 	async function refreshBadgeProperty(tabId, tabsData, property, browserActionMethod, tabData) {
 		const value = tabData[property];
 		const browserActionParameter = { tabId };
-		if (browser.browserAction && browser.browserAction[browserActionMethod]) {
+		if (browser.browserAction[browserActionMethod]) {
 			browserActionParameter[property] = value;
 			if (!tabsData[tabId]) {
 				tabsData[tabId] = {};