Ahmad Kholid 2 years ago
parent
commit
fac48f2033

+ 1 - 1
package.json

@@ -1,6 +1,6 @@
 {
   "name": "automa",
-  "version": "1.14.0",
+  "version": "1.14.2",
   "description": "An extension for automating your browser by connecting blocks",
   "license": "MIT",
   "repository": {

+ 1 - 4
src/background/workflowEngine/blocksHandler/handlerElementExists.js

@@ -12,10 +12,7 @@ function elementExists(block) {
 
         resolve({
           data,
-          nextBlockId: this.getBlockConnections(
-            block.id,
-            data ? 1 : 'fallback'
-          ),
+          nextBlockId: this.getBlockConnections(block.id, data ? 1 : 2),
         });
       })
       .catch((error) => {

+ 2 - 11
src/components/block/BlockElementExists.vue

@@ -3,7 +3,7 @@
     :id="componentId"
     class="element-exists"
     style="width: 195px"
-    @edit="editBlock"
+    @edit="$emit('edit')"
     @delete="$emit('delete', id)"
   >
     <Handle :id="`${id}-input-1`" type="target" :position="Position.Left" />
@@ -44,7 +44,6 @@
 <script setup>
 import { useI18n } from 'vue-i18n';
 import { Handle, Position } from '@braks/vue-flow';
-import emitter from '@/lib/mitt';
 import { useComponentId } from '@/composable/componentId';
 import { useEditorBlock } from '@/composable/editorBlock';
 import BlockBase from './BlockBase.vue';
@@ -63,19 +62,11 @@ const props = defineProps({
     default: () => ({}),
   },
 });
-defineEmits(['delete']);
+defineEmits(['delete', 'edit']);
 
 const { t } = useI18n();
 const block = useEditorBlock(props.label);
 const componentId = useComponentId('block-delay');
-
-function editBlock() {
-  emitter.emit('editor:edit-block', {
-    ...block.details,
-    data: props.data,
-    blockId: block.id,
-  });
-}
 </script>
 <style>
 .drawflow .element-exists .outputs {

+ 2 - 5
src/components/block/BlockLoopBreakpoint.vue

@@ -29,7 +29,6 @@
 </template>
 <script setup>
 import { useI18n } from 'vue-i18n';
-import emitter from '@/lib/mitt';
 import { Handle, Position } from '@braks/vue-flow';
 import { useComponentId } from '@/composable/componentId';
 import { useEditorBlock } from '@/composable/editorBlock';
@@ -48,7 +47,7 @@ const props = defineProps({
     default: () => ({}),
   },
 });
-defineEmits(['delete']);
+const emit = defineEmits(['delete', 'update']);
 
 const { t } = useI18n();
 const block = useEditorBlock(props.label);
@@ -56,8 +55,6 @@ const componentId = useComponentId('block-delay');
 
 function handleInput({ target }) {
   const loopId = target.value.replace(/\s/g, '');
-
-  props.editor.updateNodeDataFromId(block.id, { loopId });
-  emitter.emit('editor:data-changed', block.id);
+  emit('update', { loopId });
 }
 </script>

+ 0 - 17
src/components/newtab/workflow/edit/EditConditions.vue

@@ -14,13 +14,6 @@
         {{ t('workflow.blocks.conditions.add') }}
       </ui-button>
       <div class="flex-grow"></div>
-      <ui-button
-        v-tooltip:bottom="t('workflow.blocks.conditions.refresh')"
-        icon
-        @click="refreshConnections"
-      >
-        <v-remixicon name="riRefreshLine" />
-      </ui-button>
       <ui-button
         v-tooltip:bottom="t('common.settings')"
         icon
@@ -126,7 +119,6 @@ import { useI18n } from 'vue-i18n';
 import { nanoid } from 'nanoid';
 import Draggable from 'vuedraggable';
 import { sleep } from '@/utils/helper';
-import emitter from '@/lib/mitt';
 import SharedConditionBuilder from '@/components/newtab/shared/SharedConditionBuilder/index.vue';
 
 const props = defineProps({
@@ -170,10 +162,6 @@ function editCondition(index) {
 function addCondition() {
   if (conditions.value.length >= 20) return;
 
-  emitter.emit('conditions-block:add', {
-    id: props.blockId,
-  });
-
   conditions.value.push({
     id: nanoid(),
     name: `Path ${conditions.value.length + 1}`,
@@ -189,11 +177,6 @@ function deleteCondition(index, id) {
     );
   });
 }
-function refreshConnections() {
-  emitter.emit('conditions-block:refresh', {
-    id: props.blockId,
-  });
-}
 function updateData(value) {
   emit('update:data', { ...props.data, ...value });
 }

+ 1 - 1
src/components/newtab/workflow/edit/EditJavascriptCode.vue

@@ -141,7 +141,7 @@ const availableFuncs = [
 const state = reactive({
   activeTab: 'code',
   code: `${props.data.code}`,
-  preloadScripts: [...(props.data.preloadScripts || [])],
+  preloadScripts: [...Object.values(props.data.preloadScripts || [])],
   showCodeModal: false,
 });
 

+ 8 - 0
src/components/newtab/workflow/editor/EditorLogs.vue

@@ -50,4 +50,12 @@ const logs = useLiveQuery(() =>
     .limit(15)
     .sortBy('endedAt')
 );
+
+function deleteLog(logId) {
+  dbLogs.items.delete(logId).then(() => {
+    dbLogs.ctxData.where('logId').equals(logId).delete();
+    dbLogs.histories.where('logId').equals(logId).delete();
+    dbLogs.logsData.where('logId').equals(logId).delete();
+  });
+}
 </script>

+ 12 - 8
src/content/index.js

@@ -1,7 +1,6 @@
 import browser from 'webextension-polyfill';
 import findSelector from '@/lib/findSelector';
 import { toCamelCase } from '@/utils/helper';
-import cloneDeep from 'lodash.clonedeep';
 import { nanoid } from 'nanoid';
 import blocksHandler from './blocksHandler';
 import showExecutedBlock from './showExecutedBlock';
@@ -249,16 +248,21 @@ async function autoInstall() {
     const { workflows: workflowsStorage } = await browser.storage.local.get(
       'workflows'
     );
-    const copyWorkflow = cloneDeep(workflow);
 
-    copyWorkflow.table = copyWorkflow.table || copyWorkflow.dataColumns;
-    copyWorkflow.dataColumns = [];
-
-    workflowsStorage.push({
+    const workflowId = nanoid();
+    const workflowData = {
       ...workflow,
-      id: nanoid(),
+      id: workflowId,
+      dataColumns: [],
       createdAt: Date.now(),
-    });
+      table: workflow.table || workflow.dataColumns,
+    };
+
+    if (Array.isArray(workflowsStorage)) {
+      workflowsStorage.push(workflowData);
+    } else {
+      workflowsStorage[workflowId] = workflowData;
+    }
 
     await browser.storage.local.set({ workflows: workflowsStorage });
 

+ 5 - 1
src/newtab/pages/Logs.vue

@@ -156,7 +156,11 @@ const logs = computed(() =>
 );
 
 function deleteLog(id) {
-  dbLogs.items.where('id').equals(id).delete();
+  dbLogs.items.delete(id).then(() => {
+    dbLogs.ctxData.where('logId').equals(id).delete();
+    dbLogs.histories.where('logId').equals(id).delete();
+    dbLogs.logsData.where('logId').equals(id).delete();
+  });
 }
 function toggleSelectedLog(selected, logId) {
   if (selected) {

+ 5 - 0
src/newtab/pages/settings/SettingsAbout.vue

@@ -67,6 +67,11 @@ const links = [
     icon: 'riBook3Line',
     url: 'https://docs.automa.site',
   },
+  {
+    name: 'Blog',
+    icon: 'riArticleLine',
+    url: 'https://blog.automa.site',
+  },
   {
     name: 'Donate',
     icon: 'riHandHeartLine',

+ 4 - 1
src/newtab/pages/workflows/[id].vue

@@ -713,7 +713,10 @@ function pasteCopiedElements(position) {
   editor.value.addNodes(nodes);
   editor.value.addEdges(edges);
 }
-function onKeydown({ ctrlKey, metaKey, key }) {
+function onKeydown({ ctrlKey, metaKey, key, target }) {
+  const els = ['INPUT', 'SELECT'];
+  if (els.includes(target.tagName)) return;
+
   const command = (keyName) => (ctrlKey || metaKey) && keyName === key;
 
   if (command('c')) {

+ 1 - 1
src/popup/pages/Home.vue

@@ -32,7 +32,7 @@
         v-tooltip.group="t('common.dashboard')"
         icon
         :title="t('common.dashboard')"
-        @click="openDashboard"
+        @click="openDashboard('')"
       >
         <v-remixicon name="riHome5Line" />
       </ui-button>

+ 4 - 5
src/stores/workflow.js

@@ -114,7 +114,10 @@ export const useWorkflowStore = defineStore('workflow', {
         localWorkflows = firstWorkflows.map((workflow) =>
           defaultWorkflow(workflow)
         );
-        await browser.storage.local.set({ isFirstTime: false });
+        await browser.storage.local.set({
+          isFirstTime: false,
+          workflows: localWorkflows,
+        });
       }
 
       this.workflows = convertWorkflowsToObject(localWorkflows);
@@ -125,10 +128,6 @@ export const useWorkflowStore = defineStore('workflow', {
         ({ isDestroyed }) => !isDestroyed
       );
 
-      if (isFirstTime) {
-        await this.saveToStorage('workflows');
-      }
-
       this.retrieved = true;
     },
     async insert(data = {}, options = {}) {

+ 2 - 16
src/utils/firstWorkflows.js

@@ -68,21 +68,7 @@ export default [
             waitTabLoaded: false,
             updatePrevTab: false,
             customUserAgent: false,
-            onError: {
-              0: 's',
-              1: 't',
-              2: 'a',
-              3: 't',
-              4: 'e',
-              5: '.',
-              6: 'o',
-              7: 'n',
-              8: 'E',
-              9: 'r',
-              10: 'r',
-              11: 'o',
-              12: 'r',
-            },
+            onError: {},
           },
           selected: false,
         },
@@ -198,7 +184,7 @@ export default [
           targetX: 0,
           targetY: 0,
           markerEnd: 'arrowclosed',
-          animated: true,
+          animated: false,
         },
         {
           id: 'edge-2',