Просмотр исходного кода

fix: context menu workflow not working in firefox

Ahmad Kholid 2 лет назад
Родитель
Сommit
3601adfd04

+ 3 - 0
src/background/index.js

@@ -108,6 +108,9 @@ const workflow = {
                 status === 'success' ? 'Successfully' : 'Failed'
               } to run the "${name}" workflow`,
             });
+          })
+          .catch((error) => {
+            console.error(error);
           });
       });
 

+ 3 - 2
src/components/newtab/workflow/edit/Trigger/TriggerContextMenu.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="mt-4">
-    <template v-if="!permission.has.contextMenus">
+    <template v-if="!permission.has[permissionName]">
       <p>
         {{ t('workflow.blocks.trigger.contextMenus.noPermission') }}
       </p>
@@ -74,9 +74,10 @@ const types = [
   'selection',
   'video',
 ];
+const permissionName = BROWSER_TYPE === 'firefox' ? 'menus' : 'contextMenus';
 
 const { t } = useI18n();
-const permission = useHasPermissions(['contextMenus']);
+const permission = useHasPermissions([permissionName]);
 
 const workflow = inject('workflow');
 

+ 6 - 2
src/content/index.js

@@ -136,11 +136,13 @@ function messageListener({ data, source }) {
   window.addEventListener('message', messageListener);
 
   let contextElement = null;
+  let $ctxTextSelection = '';
 
   if (isMainFrame) {
     shortcutListener();
     window.addEventListener('contextmenu', ({ target }) => {
       contextElement = target;
+      $ctxTextSelection = window.getSelection().toString();
     });
     // window.addEventListener('load', elementObserver);
   }
@@ -167,9 +169,11 @@ function messageListener({ data, source }) {
           }
           case 'context-element': {
             let $ctxElSelector = '';
-            const $ctxTextSelection = window.getSelection().toString() || '';
 
-            if (contextElement) $ctxElSelector = finder(contextElement);
+            if (contextElement) {
+              $ctxElSelector = finder(contextElement);
+              contextElement = null;
+            }
 
             resolve({ $ctxElSelector, $ctxTextSelection });
             break;

+ 1 - 1
src/manifest.firefox.json

@@ -52,12 +52,12 @@
   "optional_permissions": [
     "clipboardRead",
     "downloads",
-    "menus",
     "notifications"
   ],
   "permissions": [
     "tabs",
     "proxy",
+    "menus",
     "alarms",
     "storage",
     "webNavigation",