Browse Source

fix: `localstorage` not defined error

Ahmad Kholid 2 years ago
parent
commit
47feff58c4

+ 1 - 0
src/workflowEngine/WorkflowEngine.js

@@ -27,6 +27,7 @@ class WorkflowEngine {
     this.extractedGroup = {};
     this.connectionsMap = {};
     this.waitConnections = {};
+    this.restartWorkersCount = {};
 
     this.isDestroyed = false;
     this.isUsingProxy = false;

+ 3 - 4
src/workflowEngine/WorkflowWorker.js

@@ -291,12 +291,11 @@ class WorkflowWorker {
           this.executeNextBlocks(nodeConnections, error.data || '');
         }, blockDelay);
       } else if (onError === 'restart-workflow' && !this.parentWorkflow) {
-        const restartKey = `restart-count:${this.id}`;
-        const restartCount = +localStorage.getItem(restartKey) || 0;
+        const restartCount = this.engine.restartWorkersCount[this.id] || 0;
         const maxRestart = this.settings.restartTimes ?? 3;
 
         if (restartCount >= maxRestart) {
-          localStorage.removeItem(restartKey);
+          delete this.engine.restartWorkersCount[this.id];
           this.engine.destroy('error', error.message, errorLogItem);
           return;
         }
@@ -306,7 +305,7 @@ class WorkflowWorker {
         const triggerBlock = this.engine.blocks[this.engine.triggerBlockId];
         if (triggerBlock) this.executeBlock(triggerBlock, execParam);
 
-        localStorage.setItem(restartKey, restartCount + 1);
+        this.engine.restartWorkersCount[this.id] = restartCount + 1;
       } else {
         this.engine.destroy('error', error.message, errorLogItem);
       }

+ 4 - 2
src/workflowEngine/blocksHandler/handlerLoopData.js

@@ -76,7 +76,7 @@ async function loopData({ data, id }, { refData }) {
           throw new Error('invalid-loop-data');
         }
 
-        if (data.resumeLastWorkflow) {
+        if (data.resumeLastWorkflow && this.engine.isPopup) {
           index = JSON.parse(localStorage.getItem(`index:${id}`)) || 0;
         } else if (data.startIndex > 0) {
           index = data.startIndex;
@@ -108,7 +108,9 @@ async function loopData({ data, id }, { refData }) {
       };
     }
 
-    localStorage.setItem(`index:${id}`, this.loopList[data.loopId].index);
+    if (this.engine.isPopup) {
+      localStorage.setItem(`index:${id}`, this.loopList[data.loopId].index);
+    }
 
     return {
       data: refData.loopData[data.loopId],