This repository has been archived on 2023-03-18. You can view files and clone it, but cannot push or open issues or pull requests.
osr-discourse-src/app/assets/javascripts/discourse/lib/key_value_store.js

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];
}
};