adding all the dev files, package, webpack etc, including build which will contain minified release
51 lines
1.0 KiB
JavaScript
51 lines
1.0 KiB
JavaScript
import { SyncStorage } from '../utils/chrome';
|
|
import { EventEmitter } from 'events';
|
|
|
|
class PersistentSyncStorage extends EventEmitter {
|
|
constructor() {
|
|
super();
|
|
|
|
this._data = null;
|
|
this.state = 'initiating';
|
|
|
|
this._init();
|
|
}
|
|
|
|
async _init() {
|
|
const fetchedData = await SyncStorage.get();
|
|
this._initListener();
|
|
this._data = fetchedData;
|
|
this.state = 'ready';
|
|
this.emit(this.state);
|
|
}
|
|
|
|
_initListener() {
|
|
SyncStorage.listen((changes) => {
|
|
|
|
Object.keys(changes).forEach((changeKey) => {
|
|
if(changes[changeKey].hasOwnProperty('newValue')) {
|
|
this._data[changeKey] = changes[changeKey].newValue;
|
|
} else {
|
|
console.error('No newValue in sync storge change');
|
|
}
|
|
});
|
|
|
|
this.emit('change', this.data, changes);
|
|
});
|
|
}
|
|
|
|
set(items) {
|
|
return SyncStorage.set(items);
|
|
}
|
|
|
|
get data() {
|
|
return this._data;
|
|
}
|
|
|
|
|
|
has(item) {
|
|
return this.data.hasOwnProperty(item);
|
|
}
|
|
}
|
|
|
|
export default new PersistentSyncStorage(); |