Browse Source

feat: add visit web trigger listener

Ahmad Kholid 2 years ago
parent
commit
3dc55ceaa6

+ 9 - 1
src/background/BackgroundEventsListeners.js

@@ -1,4 +1,5 @@
 import BackgroundUtils from './BackgroundUtils';
 import BackgroundUtils from './BackgroundUtils';
+import BackgroundRecordWorkflow from './BackgroundRecordWorkflow';
 import BackgroundWorkflowTriggers from './BackgroundWorkflowTriggers';
 import BackgroundWorkflowTriggers from './BackgroundWorkflowTriggers';
 
 
 class BackgroundEventsListeners {
 class BackgroundEventsListeners {
@@ -6,9 +7,16 @@ class BackgroundEventsListeners {
     BackgroundUtils.openDashboard();
     BackgroundUtils.openDashboard();
   }
   }
 
 
-  static async onAlarms(event) {
+  static onAlarms(event) {
     BackgroundWorkflowTriggers.scheduleWorkflow(event);
     BackgroundWorkflowTriggers.scheduleWorkflow(event);
   }
   }
+
+  static onWebNavigationCompleted({ tabId, url, frameId }) {
+    if (frameId > 0) return;
+
+    BackgroundRecordWorkflow.checkRecording(tabId, url);
+    BackgroundWorkflowTriggers.visitWebTriggers(tabId, url);
+  }
 }
 }
 
 
 export default BackgroundEventsListeners;
 export default BackgroundEventsListeners;

+ 5 - 3
src/background/BackgroundUtils.js

@@ -28,11 +28,13 @@ class BackgroundUtils {
           await browser.tabs.reload(tab.id);
           await browser.tabs.reload(tab.id);
         }
         }
       } else {
       } else {
-        await browser.windows.create({
+        const windowOptions = {
           url: tabUrl,
           url: tabUrl,
           type: 'popup',
           type: 'popup',
-          focused: updateTab,
-        });
+          state: updateTab ? 'maximized' : 'minimized',
+        };
+
+        await browser.windows.create(windowOptions);
       }
       }
     } catch (error) {
     } catch (error) {
       console.error(error);
       console.error(error);

+ 4 - 45
src/background/index.js

@@ -207,51 +207,6 @@ async function updateRecording(callback) {
 
 
   await browser.storage.local.set({ recording });
   await browser.storage.local.set({ recording });
 }
 }
-async function checkVisitWebTriggers(tabId, tabUrl) {
-  const visitWebTriggers = await browserStorage.get('visitWebTriggers');
-  if (!visitWebTriggers || visitWebTriggers.length === 0) return;
-
-  const workflowState = await workflow.states.get(({ state }) =>
-    state.tabIds.includes(tabId)
-  );
-  const triggeredWorkflow = visitWebTriggers?.find(({ url, isRegex, id }) => {
-    if (url.trim() === '') return false;
-
-    const matchUrl = tabUrl.match(isRegex ? new RegExp(url, 'g') : url);
-
-    return matchUrl && !id.includes(workflowState?.workflowId);
-  });
-
-  if (triggeredWorkflow) {
-    let workflowId = triggeredWorkflow.id;
-    if (triggeredWorkflow.id.startsWith('trigger')) {
-      const { 1: triggerWorkflowId } = triggeredWorkflow.id.split(':');
-      workflowId = triggerWorkflowId;
-    }
-
-    const workflowData = await workflow.get(workflowId);
-    if (workflowData) workflow.execute(workflowData, { tabId });
-  }
-}
-async function checkRecordingWorkflow(tabId, tabUrl) {
-  if (!validateUrl(tabUrl)) return;
-
-  const isRecording = await browserStorage.get('isRecording');
-  if (!isRecording) return;
-
-  await browser.tabs.executeScript(tabId, {
-    allFrames: true,
-    file: 'recordWorkflow.bundle.js',
-  });
-}
-browser.webNavigation.onCompleted.addListener(
-  async ({ tabId, url, frameId }) => {
-    if (frameId > 0) return;
-
-    checkRecordingWorkflow(tabId, url);
-    checkVisitWebTriggers(tabId, url);
-  }
-);
 browser.commands.onCommand.addListener((name) => {
 browser.commands.onCommand.addListener((name) => {
   if (name === 'open-dashboard') BackgroundUtils.openDashboard();
   if (name === 'open-dashboard') BackgroundUtils.openDashboard();
 });
 });
@@ -340,8 +295,12 @@ browser.tabs.onCreated.addListener(async (tab) => {
 
 
   await browser.storage.local.set({ recording });
   await browser.storage.local.set({ recording });
 });
 });
+
 browser.alarms.onAlarm.addListener(BackgroundEventsListeners.onAlarms);
 browser.alarms.onAlarm.addListener(BackgroundEventsListeners.onAlarms);
 browser.action.onClicked.addListener(BackgroundEventsListeners.onActionClicked);
 browser.action.onClicked.addListener(BackgroundEventsListeners.onActionClicked);
+browser.webNavigation.onCompleted.addListener(
+  BackgroundEventsListeners.onWebNavigationCompleted
+);
 
 
 const contextMenu =
 const contextMenu =
   BROWSER_TYPE === 'firefox' ? browser.menus : browser.contextMenus;
   BROWSER_TYPE === 'firefox' ? browser.menus : browser.contextMenus;