|
@@ -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();
|
|
}
|
|
}
|
|
}
|
|
}
|