Browse Source

feat: use the new Rest API

Ahmad Kholid 3 years ago
parent
commit
f55186c94b

+ 6 - 2
src/components/newtab/settings/SettingsCloudBackup.vue

@@ -287,15 +287,19 @@ async function backupWorkflowsToCloud(workflowId) {
         '__id',
       ]);
       delete workflow.extVersion;
+      workflow.drawflow =
+        typeof workflow.drawflow === 'string'
+          ? parseJSON(workflow.drawflow, { drawflow: { Home: { data: {} } } })
+          : workflow.drawflow;
 
-      if (!workflow.__id) delete workflow.__id;
+      if (!workflow.__id) workflow.__id = null;
 
       acc.push(workflow);
 
       return acc;
     }, []);
 
-    const response = await fetchApi('/me/workflows?type=backup', {
+    const response = await fetchApi('/me/workflows/backup', {
       method: 'POST',
       body: JSON.stringify({ workflows: workflowsPayload }),
     });

+ 1 - 1
src/components/newtab/workflow/WorkflowShare.vue

@@ -237,7 +237,7 @@ async function publishWorkflow() {
     });
     const result = await response.json();
 
-    if (response.status !== 200) {
+    if (!response.ok) {
       const error = new Error(response.statusText);
       error.data = result.data;
 

+ 1 - 0
src/manifest.chrome.json

@@ -35,6 +35,7 @@
     },
     {
       "matches": [
+        "http://localhost/*",
         "*://*.automa.site/*",
         "*://automa.vercel.app/*"
       ],

+ 6 - 4
src/newtab/pages/Workflows.vue

@@ -143,6 +143,7 @@
                 :key="workflow.id"
                 :data="workflow"
                 :show-details="false"
+                @execute="executeWorkflow(workflow)"
                 @click="$router.push(`/workflows/${$event.id}?shared=true`)"
               />
             </div>
@@ -154,6 +155,7 @@
                 :key="workflow.hostId"
                 :data="workflow"
                 :menu="workflowHostMenu"
+                @execute="executeWorkflow(workflow)"
                 @click="$router.push(`/workflows/${$event.hostId}/host`)"
                 @menuSelected="deleteWorkflowHost(workflow)"
               />
@@ -471,14 +473,14 @@ function addHostWorkflow() {
           return false;
         }
 
-        const response = await fetchApi('/host', {
+        const response = await fetchApi('/workflows/hosted', {
           method: 'POST',
-          body: JSON.stringify({ length, hostId }),
+          body: JSON.stringify({ hostId }),
         });
         const result = await response.json();
 
-        if (response.status !== 200) {
-          const error = new Error(response.statusText);
+        if (!response.ok) {
+          const error = new Error(result.message);
           error.data = result.data;
 
           throw error;

+ 4 - 2
src/newtab/pages/workflows/Host.vue

@@ -130,10 +130,12 @@ import { computed, reactive, onMounted, watch } from 'vue';
 import { useStore } from 'vuex';
 import { useI18n } from 'vue-i18n';
 import { useRoute, useRouter } from 'vue-router';
+import browser from 'webextension-polyfill';
 import { useDialog } from '@/composable/dialog';
 import { useShortcut } from '@/composable/shortcut';
 import { useGroupTooltip } from '@/composable/groupTooltip';
 import { parseJSON, findTriggerBlock } from '@/utils/helper';
+import { cleanWorkflowTriggers } from '@/utils/workflowTrigger';
 import { sendMessage } from '@/utils/message';
 import Log from '@/models/log';
 import getTriggerText from '@/utils/triggerText';
@@ -233,7 +235,7 @@ function deleteLog(logId) {
   });
 }
 async function retrieveTriggerText() {
-  const flow = parseJSON(workflow.value.drawflow, null);
+  const flow = parseJSON(workflow.value?.drawflow, null);
   const triggerBlock = findTriggerBlock(flow);
 
   if (!triggerBlock) return;
@@ -247,7 +249,7 @@ async function retrieveTriggerText() {
 }
 
 watch(
-  () => workflow.value.drawflow,
+  () => workflow.value?.drawflow,
   () => {
     state.editorKey += 1;
     retrieveTriggerText();

+ 7 - 10
src/newtab/pages/workflows/[id].vue

@@ -445,7 +445,7 @@ async function updateHostedWorkflow() {
       );
     }
 
-    const response = await fetchApi(`/me/workflows?id=${workflowId}`, {
+    const response = await fetchApi(`/me/workflows/${workflowId}`, {
       method: 'PUT',
       keepalive: true,
       body: JSON.stringify({
@@ -480,12 +480,9 @@ function unpublishSharedWorkflow() {
       try {
         workflowData.isUnpublishing = true;
 
-        const response = await fetchApi(
-          `/me/workflows/shared?workflowId=${workflowId}`,
-          {
-            method: 'DELETE',
-          }
-        );
+        const response = await fetchApi(`/me/workflows/shared/${workflowId}`, {
+          method: 'DELETE',
+        });
 
         if (response.status !== 200) {
           throw new Error(response.statusText);
@@ -526,7 +523,7 @@ async function saveUpdatedSharedWorkflow() {
       }
     });
 
-    const url = `/me/workflows/shared?workflowId=${workflowId}`;
+    const url = `/me/workflows/shared/${workflowId}`;
     const response = await fetchApi(url, {
       method: 'PUT',
       body: JSON.stringify(payload),
@@ -621,11 +618,11 @@ async function setAsHostWorkflow(isHost) {
       workflowPaylod.drawflow = parseJSON(workflow.value.drawflow, null);
       delete workflowPaylod.extVersion;
 
-      url += `?type=host`;
+      url += `/host`;
       payload = {
         method: 'POST',
         body: JSON.stringify({
-          workflows: workflowPaylod,
+          workflow: workflowPaylod,
         }),
       };
     } else {

+ 1 - 1
src/store/index.js

@@ -133,7 +133,7 @@ const store = createStore({
     async fetchWorkflowHosts({ commit, state }, hosts) {
       if (!hosts || hosts.length === 0) return null;
 
-      const response = await fetchApi('/host', {
+      const response = await fetchApi('/workflows/hosted', {
         method: 'POST',
         body: JSON.stringify({ hosts }),
       });

+ 6 - 1
src/utils/api.js

@@ -17,7 +17,12 @@ function queryBuilder(obj) {
 export function fetchApi(path, options) {
   const urlPath = path.startsWith('/') ? path : `/${path}`;
 
-  return fetch(`${secrets.baseApiUrl}${urlPath}`, options);
+  return fetch(`${secrets.baseApiUrl}${urlPath}`, {
+    headers: {
+      'Content-Type': 'application/json',
+    },
+    ...options,
+  });
 }
 
 export const googleSheets = {