62 lines
1.1 KiB
JavaScript
62 lines
1.1 KiB
JavaScript
/**
|
|
A simple key value store that uses LocalStorage
|
|
|
|
@class KeyValueStore
|
|
@namespace Discourse
|
|
@module Discourse
|
|
**/
|
|
|
|
|
|
var safeLocalStorage;
|
|
|
|
try {
|
|
safeLocalStorage = localStorage;
|
|
} catch(e){
|
|
// cookies disabled, we don't care
|
|
}
|
|
|
|
Discourse.KeyValueStore = {
|
|
initialized: false,
|
|
context: "",
|
|
|
|
init: function(ctx) {
|
|
this.initialized = true;
|
|
this.context = ctx;
|
|
},
|
|
|
|
abandonLocal: function() {
|
|
var i, k;
|
|
if (!(safeLocalStorage && this.initialized)) {
|
|
return;
|
|
}
|
|
i = safeLocalStorage.length - 1;
|
|
while (i >= 0) {
|
|
k = safeLocalStorage.key(i);
|
|
if (k.substring(0, this.context.length) === this.context) {
|
|
safeLocalStorage.removeItem(k);
|
|
}
|
|
i--;
|
|
}
|
|
return true;
|
|
},
|
|
|
|
remove: function(key) {
|
|
return safeLocalStorage.removeItem(this.context + key);
|
|
},
|
|
|
|
set: function(opts) {
|
|
if (!safeLocalStorage && this.initialized) {
|
|
return false;
|
|
}
|
|
safeLocalStorage[this.context + opts.key] = opts.value;
|
|
},
|
|
|
|
get: function(key) {
|
|
if (!safeLocalStorage) {
|
|
return null;
|
|
}
|
|
return safeLocalStorage[this.context + key];
|
|
}
|
|
};
|
|
|