Browse Source

feat: display running workflows

Ahmad Kholid 2 years ago
parent
commit
bf78203c7f
2 changed files with 14 additions and 2 deletions
  1. 6 2
      src/newtab/App.vue
  2. 8 0
      src/workflowEngine/WorkflowState.js

+ 6 - 2
src/newtab/App.vue

@@ -375,8 +375,12 @@ watch(
     if (isRecording) {
     if (isRecording) {
       router.push('/recording');
       router.push('/recording');
 
 
-      await browser.action.setBadgeBackgroundColor({ color: '#ef4444' });
-      await browser.action.setBadgeText({ text: 'rec' });
+      await (browser.action || browser.browserAction).setBadgeBackgroundColor({
+        color: '#ef4444',
+      });
+      await (browser.action || browser.browserAction).setBadgeText({
+        text: 'rec',
+      });
     }
     }
 
 
     autoDeleteLogs();
     autoDeleteLogs();

+ 8 - 0
src/workflowEngine/WorkflowState.js

@@ -1,4 +1,5 @@
 /* eslint-disable  no-param-reassign */
 /* eslint-disable  no-param-reassign */
+import browser from 'webextension-polyfill';
 
 
 class WorkflowState {
 class WorkflowState {
   constructor({ storage, key = 'workflowState' }) {
   constructor({ storage, key = 'workflowState' }) {
@@ -9,6 +10,11 @@ class WorkflowState {
     this.eventListeners = {};
     this.eventListeners = {};
   }
   }
 
 
+  _updateBadge() {
+    const browserAction = browser.action || browser.browserAction;
+    browserAction.setBadgeText({ text: (this.states.size || '').toString() });
+  }
+
   _saveToStorage() {
   _saveToStorage() {
     const states = Object.fromEntries(this.states);
     const states = Object.fromEntries(this.states);
     return this.storage.set(this.key, states);
     return this.storage.set(this.key, states);
@@ -58,6 +64,7 @@ class WorkflowState {
 
 
   async add(id, data = {}) {
   async add(id, data = {}) {
     this.states.set(id, data);
     this.states.set(id, data);
+    this._updateBadge();
     await this._saveToStorage(this.key);
     await this._saveToStorage(this.key);
   }
   }
 
 
@@ -84,6 +91,7 @@ class WorkflowState {
   async delete(id) {
   async delete(id) {
     this.states.delete(id);
     this.states.delete(id);
     this.dispatchEvent('delete', id);
     this.dispatchEvent('delete', id);
+    this._updateBadge();
     await this._saveToStorage();
     await this._saveToStorage();
   }
   }
 }
 }