|
@@ -256,7 +256,8 @@ async function checkVisitWebTriggers(tabId, tabUrl) {
|
|
|
}
|
|
|
|
|
|
const workflowData = await workflow.get(workflowId);
|
|
|
- if (workflowData) workflow.execute(workflowData, { tabId });
|
|
|
+ if (workflowData && !workflow.isDisabled)
|
|
|
+ workflow.execute(workflowData, { tabId });
|
|
|
}
|
|
|
}
|
|
|
async function checkRecordingWorkflow(tabId, tabUrl) {
|
|
@@ -270,7 +271,7 @@ async function checkRecordingWorkflow(tabId, tabUrl) {
|
|
|
file: 'recordWorkflow.bundle.js',
|
|
|
});
|
|
|
}
|
|
|
-browser.webNavigation.onHistoryStateUpdated.addListener(
|
|
|
+browser.webNavigation.onCompleted.addListener(
|
|
|
async ({ tabId, url, frameId }) => {
|
|
|
if (frameId > 0) return;
|
|
|
|
|
@@ -528,43 +529,63 @@ browser.runtime.onInstalled.addListener(async ({ reason }) => {
|
|
|
}
|
|
|
});
|
|
|
browser.runtime.onStartup.addListener(async () => {
|
|
|
- const { workflows, workflowHosts, teamWorkflows } =
|
|
|
- await browser.storage.local.get([
|
|
|
- 'workflows',
|
|
|
- 'workflowHosts',
|
|
|
- 'teamWorkflows',
|
|
|
- ]);
|
|
|
- const convertToArr = (value) =>
|
|
|
- Array.isArray(value) ? value : Object.values(value);
|
|
|
-
|
|
|
- const workflowsArr = convertToArr(workflows);
|
|
|
+ try {
|
|
|
+ const { workflows, workflowHosts, teamWorkflows } =
|
|
|
+ await browser.storage.local.get([
|
|
|
+ 'workflows',
|
|
|
+ 'workflowHosts',
|
|
|
+ 'teamWorkflows',
|
|
|
+ ]);
|
|
|
+ const convertToArr = (value) =>
|
|
|
+ Array.isArray(value) ? value : Object.values(value);
|
|
|
+
|
|
|
+ const workflowsArr = convertToArr(workflows);
|
|
|
+
|
|
|
+ if (workflowHosts) {
|
|
|
+ workflowsArr.push(...convertToArr(workflowHosts));
|
|
|
+ }
|
|
|
+ if (teamWorkflows) {
|
|
|
+ workflowsArr.push(...flattenTeamWorkflows(teamWorkflows));
|
|
|
+ }
|
|
|
|
|
|
- if (workflowHosts) {
|
|
|
- workflowsArr.push(...convertToArr(workflowHosts));
|
|
|
- }
|
|
|
- if (teamWorkflows) {
|
|
|
- workflowsArr.push(...flattenTeamWorkflows(teamWorkflows));
|
|
|
- }
|
|
|
+ for (const currWorkflow of workflowsArr) {
|
|
|
+ let triggerBlock = currWorkflow.trigger;
|
|
|
|
|
|
- for (const currWorkflow of workflowsArr) {
|
|
|
- let triggerBlock = currWorkflow.trigger;
|
|
|
+ if (!triggerBlock) {
|
|
|
+ const flow =
|
|
|
+ typeof currWorkflow.drawflow === 'string'
|
|
|
+ ? parseJSON(currWorkflow.drawflow, {})
|
|
|
+ : currWorkflow.drawflow;
|
|
|
|
|
|
- if (!triggerBlock) {
|
|
|
- const flow =
|
|
|
- typeof currWorkflow.drawflow === 'string'
|
|
|
- ? parseJSON(currWorkflow.drawflow, {})
|
|
|
- : currWorkflow.drawflow;
|
|
|
+ triggerBlock = findTriggerBlock(flow)?.data;
|
|
|
+ }
|
|
|
|
|
|
- triggerBlock = findTriggerBlock(flow)?.data;
|
|
|
- }
|
|
|
+ const executeWorkflow = async (trigger, triggerData) => {
|
|
|
+ if (trigger.type === 'on-startup') {
|
|
|
+ workflow.execute(currWorkflow);
|
|
|
+ } else if (trigger.type !== 'manual') {
|
|
|
+ await registerWorkflowTrigger(currWorkflow.id, triggerData);
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ if (triggerBlock) {
|
|
|
+ if (triggerBlock.triggers) {
|
|
|
+ for (const trigger of triggerBlock.triggers) {
|
|
|
+ if (trigger.type === 'on-startup') {
|
|
|
+ workflow.execute(currWorkflow);
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- if (triggerBlock) {
|
|
|
- if (triggerBlock.type === 'on-startup') {
|
|
|
- workflow.execute(currWorkflow);
|
|
|
- } else {
|
|
|
- await registerWorkflowTrigger(currWorkflow.id, { data: triggerBlock });
|
|
|
+ await registerWorkflowTrigger(currWorkflow.id, {
|
|
|
+ data: triggerBlock,
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ await executeWorkflow(triggerBlock, { data: triggerBlock });
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
+ } catch (error) {
|
|
|
+ console.error(error);
|
|
|
}
|
|
|
});
|
|
|
|