|
@@ -1,26 +1,10 @@
|
|
|
import { openDB } from 'idb';
|
|
|
import { nanoid } from 'nanoid';
|
|
|
-import Mousetrap from 'mousetrap';
|
|
|
-import browser from 'webextension-polyfill';
|
|
|
import secrets from 'secrets';
|
|
|
+import browser from 'webextension-polyfill';
|
|
|
import { objectHasKey } from '@/utils/helper';
|
|
|
import { sendMessage } from '@/utils/message';
|
|
|
|
|
|
-Mousetrap.prototype.stopCallback = function () {
|
|
|
- return false;
|
|
|
-};
|
|
|
-
|
|
|
-function getTriggerBlock(workflow) {
|
|
|
- const drawflow = JSON.parse(workflow?.drawflow || '{}');
|
|
|
-
|
|
|
- if (!drawflow?.drawflow?.Home?.data) return null;
|
|
|
-
|
|
|
- const blocks = Object.values(drawflow.drawflow.Home.data);
|
|
|
- const trigger = blocks.find(({ name }) => name === 'trigger');
|
|
|
-
|
|
|
- return trigger;
|
|
|
-}
|
|
|
-
|
|
|
function initWebListener() {
|
|
|
const listeners = {};
|
|
|
|
|
@@ -38,6 +22,7 @@ function initWebListener() {
|
|
|
|
|
|
return { on };
|
|
|
}
|
|
|
+
|
|
|
async function listenWindowMessage(workflows) {
|
|
|
try {
|
|
|
if (secrets?.webOrigin !== window.location.origin) return;
|
|
@@ -78,49 +63,11 @@ async function listenWindowMessage(workflows) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-(async () => {
|
|
|
- try {
|
|
|
- const { shortcuts, workflows } = await browser.storage.local.get([
|
|
|
- 'shortcuts',
|
|
|
- 'workflows',
|
|
|
- ]);
|
|
|
- const shortcutsArr = Object.entries(shortcuts || {});
|
|
|
-
|
|
|
- listenWindowMessage(workflows);
|
|
|
-
|
|
|
- document.body.setAttribute(
|
|
|
- 'data-atm-ext-installed',
|
|
|
- browser.runtime.getManifest().version
|
|
|
- );
|
|
|
+export default async function (workflows) {
|
|
|
+ await listenWindowMessage(workflows);
|
|
|
|
|
|
- if (shortcutsArr.length === 0) return;
|
|
|
-
|
|
|
- const keyboardShortcuts = shortcutsArr.reduce((acc, [id, value]) => {
|
|
|
- const workflow = [...workflows].find((item) => item.id === id);
|
|
|
-
|
|
|
- (acc[value] = acc[value] || []).push({
|
|
|
- id,
|
|
|
- workflow,
|
|
|
- activeInInput: getTriggerBlock(workflow)?.data?.activeInInput,
|
|
|
- });
|
|
|
-
|
|
|
- return acc;
|
|
|
- }, {});
|
|
|
-
|
|
|
- Mousetrap.bind(Object.keys(keyboardShortcuts), ({ target }, command) => {
|
|
|
- const isInputElement =
|
|
|
- ['INPUT', 'SELECT', 'TEXTAREA'].includes(target.tagName) ||
|
|
|
- target?.contentEditable === 'true';
|
|
|
-
|
|
|
- keyboardShortcuts[command].forEach((item) => {
|
|
|
- if (!item.activeInInput && isInputElement) return;
|
|
|
-
|
|
|
- sendMessage('workflow:execute', item.workflow, 'background');
|
|
|
- });
|
|
|
-
|
|
|
- return true;
|
|
|
- });
|
|
|
- } catch (error) {
|
|
|
- console.error(error);
|
|
|
- }
|
|
|
-})();
|
|
|
+ document.body.setAttribute(
|
|
|
+ 'data-atm-ext-installed',
|
|
|
+ browser.runtime.getManifest().version
|
|
|
+ );
|
|
|
+}
|