mirror of https://github.com/rancher/ui.git
60 lines
1.2 KiB
JavaScript
60 lines
1.2 KiB
JavaScript
import Mixin from '@ember/object/mixin';
|
|
|
|
export default Mixin.create({
|
|
backing: 'overrideMe with window.localStorage or window.sessionStorage',
|
|
|
|
unknownProperty(key) {
|
|
var value; // = undefined;
|
|
var backing = this.get('backing');
|
|
var str = backing.getItem(key);
|
|
|
|
if ( str ) {
|
|
try {
|
|
value = JSON.parse(str);
|
|
} catch (e) {
|
|
console.log(`Error parsing storage ['${ key }']`);
|
|
backing.removeItem(key);
|
|
this.notifyPropertyChange(key);
|
|
}
|
|
}
|
|
|
|
return value;
|
|
},
|
|
|
|
setUnknownProperty(key, value) {
|
|
if (key !== 'app') {
|
|
var backing = this.get('backing');
|
|
|
|
if ( value === undefined ) {
|
|
backing.removeItem(key);
|
|
} else {
|
|
backing.setItem(key, JSON.stringify(value));
|
|
}
|
|
|
|
this.notifyPropertyChange(key);
|
|
}
|
|
|
|
return value;
|
|
},
|
|
|
|
clear() {
|
|
var backing = this.get('backing');
|
|
|
|
this.beginPropertyChanges();
|
|
for ( var i = 0 ; i < backing.length ; i++ ) {
|
|
var key = backing.key(i);
|
|
|
|
if ( key.indexOf('.') >= 0 ) {
|
|
continue;
|
|
}
|
|
|
|
this.set(key);
|
|
}
|
|
|
|
backing.clear();
|
|
this.endPropertyChanges();
|
|
},
|
|
|
|
removeItem() {}
|
|
});
|