Przeglądaj źródła

fix: context menu missing after update

Ahmad Kholid 2 lat temu
rodzic
commit
e075ac5e16

+ 7 - 2
src/background/index.js

@@ -6,6 +6,7 @@ import getFile from '@/utils/getFile';
 import decryptFlow, { getWorkflowPass } from '@/utils/decryptFlow';
 import {
   registerSpecificDay,
+  registerContextMenu,
   registerWorkflowTrigger,
 } from '../utils/workflowTrigger';
 import WorkflowState from './WorkflowState';
@@ -370,9 +371,13 @@ browser.runtime.onInstalled.addListener(async ({ reason }) => {
           workflowTrigger = findTriggerBlock(flows)?.data;
         }
 
-        if (!alarmTypes.includes(workflowTrigger.type)) return;
+        const triggerType = workflowTrigger?.type;
 
-        registerWorkflowTrigger(id, { data: workflowTrigger });
+        if (alarmTypes.includes(triggerType)) {
+          registerWorkflowTrigger(id, { data: workflowTrigger });
+        } else if (triggerType === 'context-menu') {
+          registerContextMenu(id, workflowTrigger);
+        }
       }
     }
   } catch (error) {

+ 1 - 1
src/manifest.firefox.json

@@ -52,7 +52,7 @@
   "optional_permissions": [
     "clipboardRead",
     "downloads",
-    "contextMenus"
+    "menus"
   ],
   "permissions": [
     "tabs",

+ 4 - 2
src/utils/workflowTrigger.js

@@ -2,11 +2,13 @@ import browser from 'webextension-polyfill';
 import dayjs from 'dayjs';
 import { isObject } from './helper';
 
-function registerContextMenu(workflowId, data) {
+export function registerContextMenu(workflowId, data) {
   return new Promise((resolve, reject) => {
     const documentUrlPatterns = ['https://*/*', 'http://*/*'];
     const contextTypes =
-      data.contextTypes.length === 0 ? ['all'] : data.contextTypes;
+      !data.contextTypes || data.contextTypes.length === 0
+        ? ['all']
+        : data.contextTypes;
 
     browser.contextMenus.create(
       {