Browse Source

fix: javascript code doesn't throw an error

Ahmad Kholid 3 years ago
parent
commit
41f223dd24

+ 3 - 0
src/background/workflow-engine/blocks-handler/handler-javascript-code.js

@@ -23,6 +23,9 @@ export async function javascriptCode({ outputs, data, ...block }, { refData }) {
 
     const result = await this._sendMessageToTab({ ...block, data, refData });
 
+    if (result?.columns.data.$error) {
+      throw new Error(result?.columns.data.message);
+    }
     if (result?.variables) {
       Object.keys(result.variables).forEach((varName) => {
         this.setVariable(varName, result.variables[varName]);

+ 11 - 3
src/components/newtab/workflow/edit/TriggerEventWheel.vue

@@ -1,9 +1,17 @@
 <template>
   <div class="grid gap-2 grid-cols-2">
-    <ui-input v-model="defaultParams.deltaX" type="number" label="deltaX" />
-    <ui-input v-model="defaultParams.deltaY" type="number" label="deltaY" />
     <ui-input
-      v-model="defaultParams.deltaX"
+      v-model.number="defaultParams.deltaX"
+      type="number"
+      label="deltaX"
+    />
+    <ui-input
+      v-model.number="defaultParams.deltaY"
+      type="number"
+      label="deltaY"
+    />
+    <ui-input
+      v-model.number="defaultParams.deltaZ"
       type="number"
       class="col-span-2"
       label="deltaZ"

+ 11 - 2
src/content/blocks-handler/handler-javascript-code.js

@@ -124,11 +124,20 @@ function javascriptCode(block) {
 
       script.setAttribute(scriptAttr, '');
       script.classList.add('automa-custom-js');
-      script.innerHTML = `(() => {\n${automaScript} ${block.data.code}\n})()`;
+      script.innerHTML = `(() => {
+        ${automaScript}
+
+        try {
+          ${block.data.code}
+        } catch (error) {
+          console.error(error);
+          automaNextBlock({ $error: true, message: error.message });
+        }
+      })()`;
 
       if (!block.data.everyNewTab) {
         let timeout;
-        const cleanUp = (columns = '') => {
+        const cleanUp = (columns = {}) => {
           const storageKey = `automa--${block.id}`;
           const storageRefData = JSON.parse(sessionStorage.getItem(storageKey));