2021-05-31 19:52:18 +08:00

95 lines
2.8 KiB
JavaScript
Vendored

const state = {
setStorage(key, value) {
return this._storage(key, value);
},
getStorage(key, def = null) {
let value = this._storage(key);
return value || def;
},
getStorageString(key, def = '') {
let value = this._storage(key);
return typeof value === "string" || typeof value === "number" ? value : def;
},
getStorageNumber(key, def = 0) {
let value = this._storage(key);
return typeof value === "number" ? value : def;
},
getStorageBoolean(key, def = false) {
let value = this._storage(key);
return typeof value === "boolean" ? value : def;
},
getStorageArray(key, def = {}) {
let value = this._storage(key);
return this._isArray(value) ? value : def;
},
getStorageJson(key, def = {}) {
let value = this._storage(key);
return this._isJson(value) ? value : def;
},
_isArray(obj) {
return typeof (obj) == "object" && Object.prototype.toString.call(obj).toLowerCase() == '[object array]' && typeof obj.length == "number";
},
_isJson(obj) {
return typeof (obj) == "object" && Object.prototype.toString.call(obj).toLowerCase() == "[object object]" && typeof obj.length == "undefined";
},
_storage(key, value) {
let keyName = 'state';
if (typeof value === 'undefined') {
return this._loadFromlLocal('__::', key, '', '__' + keyName + '__');
} else {
this._savaToLocal('__::', key, value, '__' + keyName + '__');
}
},
_savaToLocal(id, key, value, keyName) {
try {
if (typeof keyName === 'undefined') keyName = '__seller__';
let seller = window.localStorage[keyName];
if (!seller) {
seller = {};
seller[id] = {};
} else {
seller = JSON.parse(seller);
if (!seller[id]) {
seller[id] = {};
}
}
seller[id][key] = value;
window.localStorage[keyName] = JSON.stringify(seller);
} catch (e) {
}
},
_loadFromlLocal(id, key, def, keyName) {
try {
if (typeof keyName === 'undefined') keyName = '__seller__';
let seller = window.localStorage[keyName];
if (!seller) {
return def;
}
seller = JSON.parse(seller)[id];
if (!seller || typeof seller[key] === 'undefined') {
return def;
}
return seller[key];
} catch (e) {
return def;
}
},
};
export default Object.assign(state, {
projectChatShow: state.getStorageBoolean('projectChatShow', true),
userInfo: state.getStorageJson('userInfo'),
token: state.getStorageString('token'),
})