summaryrefslogtreecommitdiffstats
path: root/web/react/stores/browser_store.jsx
diff options
context:
space:
mode:
authorChristopher Speller <crspeller@gmail.com>2015-07-08 09:55:24 -0400
committerChristopher Speller <crspeller@gmail.com>2015-07-08 09:55:24 -0400
commit7f5ebb42b5712460fd29fb086b0734ccba1aacd9 (patch)
tree0537b826a82a7285b63e50080a7a232ec6d6675f /web/react/stores/browser_store.jsx
parent95b9f872882b367556ca2330eea8c8309db542e6 (diff)
downloadchat-7f5ebb42b5712460fd29fb086b0734ccba1aacd9.tar.gz
chat-7f5ebb42b5712460fd29fb086b0734ccba1aacd9.tar.bz2
chat-7f5ebb42b5712460fd29fb086b0734ccba1aacd9.zip
Modifying all storage to use session storage. Also adding an abstraction layer to add current user id as a prefix to most keys.
Diffstat (limited to 'web/react/stores/browser_store.jsx')
-rw-r--r--web/react/stores/browser_store.jsx48
1 files changed, 48 insertions, 0 deletions
diff --git a/web/react/stores/browser_store.jsx b/web/react/stores/browser_store.jsx
new file mode 100644
index 000000000..dd9b09c9f
--- /dev/null
+++ b/web/react/stores/browser_store.jsx
@@ -0,0 +1,48 @@
+// Copyright (c) 2015 Spinpunch, Inc. All Rights Reserved.
+// See License.txt for license information.
+
+var UserStore = require('../stores/user_store.jsx');
+var BROWSER_STORE_VERSION = '.1';
+
+module.exports.initalize = function() {
+ var currentVersion = localStorage.getItem("local_storage_version");
+ if (currentVersion !== BROWSER_STORE_VERSION) {
+ localStorage.clear();
+ sessionStorage.clear();
+ localStorage.setItem("local_storage_version", BROWSER_STORE_VERSION);
+ }
+}
+
+module.exports.setItem = function(name, value) {
+ var user_id = UserStore.getCurrentId();
+ localStorage.setItem(user_id + "_" + name, value);
+};
+
+module.exports.getItem = function(name) {
+ var user_id = UserStore.getCurrentId();
+ return localStorage.getItem(user_id + "_" + name);
+};
+
+module.exports.removeItem = function(name) {
+ var user_id = UserStore.getCurrentId();
+ localStorage.removeItem(user_id + "_" + name);
+};
+
+module.exports.clear = function() {
+ localStorage.clear();
+ sessionStorage.clear();
+};
+
+// Preforms the given action on each item that has the given prefix
+// Signiture for action is action(key, value)
+module.exports.actionOnItemsWithPrefix = function (prefix, action) {
+ var user_id = UserStore.getCurrentId();
+ var id_len = user_id.length;
+ var prefix_len = prefix.length;
+ for (key in localStorage) {
+ if (key.substring(id_len, id_len + prefix_len) === prefix) {
+ var userkey = key.substring(id_len);
+ action(userkey, BrowserStore.getItem(key));
+ }
+ }
+};