Pārlūkot izejas kodu

fix: can't install worflow & package from marketplace

Ahmad Kholid 2 gadi atpakaļ
vecāks
revīzija
7fe5e0c678

+ 0 - 3
src/background/BackgroundUtils.js

@@ -24,9 +24,6 @@ class BackgroundUtils {
             state: 'maximized',
           });
         }
-        if (updateTab && tabUrl.includes('workflows/')) {
-          await browser.tabs.reload(tab.id);
-        }
       } else {
         const windowOptions = {
           url: tabUrl,

+ 30 - 26
src/background/index.js

@@ -114,35 +114,39 @@ message.on('workflow:execute', (workflowData, sender) => {
     workflowData?.options || {}
   );
 });
-message.on('workflow:added', ({ workflowId, teamId, source = 'community' }) => {
-  let path = `/workflows/${workflowId}`;
-
-  if (source === 'team') {
-    if (!teamId) return;
-    path = `/teams/${teamId}/workflows/${workflowId}`;
-  }
-
-  browser.tabs
-    .query({ url: browser.runtime.getURL('/newtab.html') })
-    .then((tabs) => {
-      if (tabs.length >= 1) {
-        const lastTab = tabs.at(-1);
+message.on(
+  'workflow:added',
+  ({ workflowId, teamId, workflowData, source = 'community' }) => {
+    let path = `/workflows/${workflowId}`;
+
+    if (source === 'team') {
+      if (!teamId) return;
+      path = `/teams/${teamId}/workflows/${workflowId}`;
+    }
 
-        tabs.forEach((tab) => {
-          browser.tabs.sendMessage(tab.id, {
-            data: { workflowId, teamId, source },
-            type: 'workflow:added',
+    browser.tabs
+      .query({ url: browser.runtime.getURL('/newtab.html') })
+      .then((tabs) => {
+        if (tabs.length >= 1) {
+          const lastTab = tabs.at(-1);
+
+          tabs.forEach((tab) => {
+            browser.tabs.sendMessage(tab.id, {
+              data: { workflowId, teamId, source, workflowData },
+              type: 'workflow:added',
+            });
           });
-        });
 
-        browser.tabs.update(lastTab.id, {
-          active: true,
-        });
-      } else {
-        BackgroundUtils.openDashboard(`${path}?permission=true`);
-      }
-    });
-});
+          browser.tabs.update(lastTab.id, {
+            active: true,
+          });
+          browser.windows.update(lastTab.windowId, { focused: true });
+        } else {
+          BackgroundUtils.openDashboard(`${path}?permission=true`);
+        }
+      });
+  }
+);
 message.on('workflow:register', ({ triggerBlock, workflowId }) => {
   registerWorkflowTrigger(workflowId, triggerBlock);
 });

+ 5 - 1
src/content/services/webService.js

@@ -89,7 +89,11 @@ window.addEventListener('DOMContentLoaded', async () => {
         }
 
         await browser.storage.local.set({ workflows: workflowsStorage });
-        sendMessage('workflow:added', { workflowId }, 'background');
+        sendMessage(
+          'workflow:added',
+          { workflowId, workflowData },
+          'background'
+        );
       } catch (error) {
         console.error(error);
       }

+ 28 - 5
src/newtab/App.vue

@@ -45,6 +45,10 @@
         <v-remixicon size="20" name="riCloseLine" />
       </button>
     </div>
+    <shared-permissions-modal
+      v-model="permissionState.showModal"
+      :permissions="permissionState.items"
+    />
   </template>
   <div v-else class="py-8 text-center">
     <ui-spinner color="text-accent" size="28" />
@@ -52,7 +56,7 @@
   <app-survey />
 </template>
 <script setup>
-import { ref } from 'vue';
+import { ref, reactive } from 'vue';
 import { useI18n } from 'vue-i18n';
 import { useRouter } from 'vue-router';
 import { compare } from 'compare-versions';
@@ -69,6 +73,7 @@ import { useHostedWorkflowStore } from '@/stores/hostedWorkflow';
 import { useSharedWorkflowStore } from '@/stores/sharedWorkflow';
 import { loadLocaleMessages, setI18nLanguage } from '@/lib/vueI18n';
 import { getUserWorkflows } from '@/utils/api';
+import { getWorkflowPermissions } from '@/utils/workflowData';
 import automa from '@business';
 import dbLogs from '@/db/logs';
 import dayjs from '@/lib/dayjs';
@@ -77,6 +82,7 @@ import AppSidebar from '@/components/newtab/app/AppSidebar.vue';
 import dataMigration from '@/utils/dataMigration';
 import iconFirefox from '@/assets/svg/logoFirefox.svg';
 import iconChrome from '@/assets/svg/logo.svg';
+import SharedPermissionsModal from '@/components/newtab/shared/SharedPermissionsModal.vue';
 import { executeWorkflow } from './workflowEngine';
 
 let icon;
@@ -107,6 +113,10 @@ theme.init();
 
 const retrieved = ref(false);
 const isUpdated = ref(false);
+const permissionState = reactive({
+  permissions: [],
+  showModal: false,
+});
 
 const currentVersion = browser.runtime.getManifest().version;
 const prevVersion = localStorage.getItem('ext-version') || '0.0.0';
@@ -193,10 +203,23 @@ const messageEvents = {
           `/teams/${data.teamId}/workflows/${data.workflowId}?permission=true`
         );
       });
-    } else {
-      workflowStore.loadData().then(() => {
-        router.push(`/workflows/${data.workflowId}?permission=true`);
-      });
+    } else if (data.workflowData) {
+      workflowStore
+        .insert(data.workflowData, { duplicateId: true })
+        .then(async () => {
+          try {
+            const permissions = await getWorkflowPermissions(data.workflowData);
+            if (permissions.length === 0) return;
+
+            permissionState.items = permissions;
+            permissionState.showModal = true;
+          } catch (error) {
+            console.error(error);
+          }
+        })
+        .catch((error) => {
+          console.error(error);
+        });
     }
   },
   'workflow:execute': function ({ data, options = {} }) {