class LocalStorage { constructor() { Common.Gateway.on('internalcommand', data => { if (data.type == 'localstorage') { this._store = data.keys; } }); this._store = {}; try { this._isAllowed = !!window.localStorage; } catch (e) { this._isAllowed = false; } } get id() { return this._storeName; } set id(name) { this._storeName = name; } set keysFilter(value) { this._filter = value; } get keysFilter() { return this._filter; } sync() { if ( !this._isAllowed ) Common.Gateway.internalMessage('localstorage', {cmd:'get', keys:this._filter}); } save() { if ( !this._isAllowed ) Common.Gateway.internalMessage('localstorage', {cmd:'set', keys:this._store}); } setItem(name, value, just) { if ( this._isAllowed ) { try { localStorage.setItem(name, value); } catch (error){} } else { this._store[name] = value; if ( just===true ) { Common.Gateway.internalMessage('localstorage', {cmd:'set', keys: {name: value}}); } } } getItem(name) { if ( this._isAllowed ) return localStorage.getItem(name); else return this._store[name]===undefined ? null : this._store[name]; }; setBool(name, value, just) { this.setItem(name, value ? 1 : 0, just); } getBool(name, defValue) { const value = this.getItem(name); return (value !== null) ? (parseInt(value) != 0) : !!defValue; } itemExists(name) { return this.getItem(name) !== null; } } const instance = new LocalStorage(); export {instance as LocalStorage};