71 lines
1.4 KiB
JavaScript
71 lines
1.4 KiB
JavaScript
|
var storage = (function () {
|
||
|
var storageName = 'cdb';
|
||
|
var version = '0.1.0';
|
||
|
var mainStorageKey;
|
||
|
var initialized = false;
|
||
|
var userModel;
|
||
|
|
||
|
function init (key, opts) {
|
||
|
if (!key) {
|
||
|
throw new Error('key is required');
|
||
|
}
|
||
|
|
||
|
if (!userModel && !opts) {
|
||
|
throw new Error('userModel is required');
|
||
|
}
|
||
|
|
||
|
if (!userModel && opts && opts.userModel) {
|
||
|
userModel = opts.userModel;
|
||
|
}
|
||
|
|
||
|
mainStorageKey = key;
|
||
|
initialized = true;
|
||
|
}
|
||
|
|
||
|
function getKey (key) {
|
||
|
return [storageName, version, userModel.get('username'), mainStorageKey, key].join('.');
|
||
|
}
|
||
|
|
||
|
function isSupported () {
|
||
|
try {
|
||
|
return 'localStorage' in window && window['localStorage'] !== null;
|
||
|
} catch (e) {
|
||
|
return false;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return {
|
||
|
init: function (key, opts) {
|
||
|
if (!isSupported()) throw new Error('localStorage not supported in your browser');
|
||
|
init(key, opts);
|
||
|
},
|
||
|
|
||
|
get: function (key) {
|
||
|
if (!initialized) {
|
||
|
init();
|
||
|
}
|
||
|
var storageKey = getKey(key);
|
||
|
return localStorage[storageKey];
|
||
|
},
|
||
|
|
||
|
set: function (key, value) {
|
||
|
if (!initialized) {
|
||
|
init();
|
||
|
}
|
||
|
var storageKey = getKey(key);
|
||
|
localStorage[storageKey] = value;
|
||
|
},
|
||
|
|
||
|
delete: function (key) {
|
||
|
if (!initialized) {
|
||
|
init();
|
||
|
}
|
||
|
|
||
|
var storageKey = getKey(key);
|
||
|
delete localStorage[storageKey];
|
||
|
}
|
||
|
};
|
||
|
})();
|
||
|
|
||
|
module.exports = storage;
|