Browse Source

feat: add context menu trigger listener

Ahmad Kholid 2 years ago
parent
commit
6e5b8f7f1b

+ 4 - 0
src/background/BackgroundEventsListeners.js

@@ -17,6 +17,10 @@ class BackgroundEventsListeners {
     BackgroundRecordWorkflow.checkRecording(tabId, url);
     BackgroundRecordWorkflow.checkRecording(tabId, url);
     BackgroundWorkflowTriggers.visitWebTriggers(tabId, url);
     BackgroundWorkflowTriggers.visitWebTriggers(tabId, url);
   }
   }
+
+  static onContextMenuClicked(event, tab) {
+    BackgroundWorkflowTriggers.contextMenu(event, tab);
+  }
 }
 }
 
 
 export default BackgroundEventsListeners;
 export default BackgroundEventsListeners;

+ 26 - 0
src/background/BackgroundWorkflowTriggers.js

@@ -110,6 +110,32 @@ class BackgroundWorkflowTriggers {
       console.error(error);
       console.error(error);
     }
     }
   }
   }
+
+  static async contextMenu({ parentMenuItemId, menuItemId, frameId }, tab) {
+    try {
+      if (parentMenuItemId !== 'automaContextMenu') return;
+      const message = await browser.tabs.sendMessage(tab.id, {
+        frameId,
+        type: 'context-element',
+      });
+      let workflowId = menuItemId;
+      if (menuItemId.startsWith('trigger')) {
+        const { 1: triggerWorkflowId } = menuItemId.split(':');
+        workflowId = triggerWorkflowId;
+      }
+
+      const workflowData = await BackgroundWorkflowUtils.getWorkflow(
+        workflowId
+      );
+      BackgroundWorkflowUtils.executeWorkflow(workflowData, {
+        data: {
+          variables: message,
+        },
+      });
+    } catch (error) {
+      console.error(error);
+    }
+  }
 }
 }
 
 
 export default BackgroundWorkflowTriggers;
 export default BackgroundWorkflowTriggers;

+ 1 - 25
src/background/index.js

@@ -306,31 +306,7 @@ const contextMenu =
   BROWSER_TYPE === 'firefox' ? browser.menus : browser.contextMenus;
   BROWSER_TYPE === 'firefox' ? browser.menus : browser.contextMenus;
 if (contextMenu && contextMenu.onClicked) {
 if (contextMenu && contextMenu.onClicked) {
   contextMenu.onClicked.addListener(
   contextMenu.onClicked.addListener(
-    async ({ parentMenuItemId, menuItemId }, tab) => {
-      try {
-        if (parentMenuItemId !== 'automaContextMenu') return;
-
-        const message = await browser.tabs.sendMessage(tab.id, {
-          frameId: 0,
-          type: 'context-element',
-        });
-        let workflowId = menuItemId;
-        if (menuItemId.startsWith('trigger')) {
-          const { 1: triggerWorkflowId } = menuItemId.split(':');
-          workflowId = triggerWorkflowId;
-        }
-
-        const workflowData = await workflow.get(workflowId);
-
-        workflow.execute(workflowData, {
-          data: {
-            variables: message,
-          },
-        });
-      } catch (error) {
-        console.error(error);
-      }
-    }
+    BackgroundEventsListeners.onContextMenuClicked
   );
   );
 }
 }
 
 

+ 1 - 1
src/background/workflowEngine/blocksHandler/handlerActiveTab.js

@@ -16,7 +16,7 @@ async function activeTab(block) {
 
 
     const [tab] = await browser.tabs.query({
     const [tab] = await browser.tabs.query({
       active: true,
       active: true,
-      currentWindow: true,
+      url: '*://*/*',
     });
     });
 
 
     if (!tab?.url.startsWith('http')) {
     if (!tab?.url.startsWith('http')) {

+ 1 - 1
src/newtab/utils/workflowEngine/blocksHandler/handlerActiveTab.js

@@ -16,7 +16,7 @@ async function activeTab(block) {
 
 
     const [tab] = await browser.tabs.query({
     const [tab] = await browser.tabs.query({
       active: true,
       active: true,
-      currentWindow: true,
+      url: '*://*/*',
     });
     });
 
 
     if (!tab?.url.startsWith('http')) {
     if (!tab?.url.startsWith('http')) {