summaryrefslogtreecommitdiffstats
path: root/webapp/stores
diff options
context:
space:
mode:
authorChristopher Speller <crspeller@gmail.com>2016-03-23 12:11:47 -0400
committerChristopher Speller <crspeller@gmail.com>2016-03-23 15:35:38 -0400
commitc3aa84a883dcb846d618c79571960fbaa5592056 (patch)
treea542957684df775f192b35b896b09066dd035973 /webapp/stores
parent7af2e6f87a754312809aa044edd062930616401a (diff)
downloadchat-c3aa84a883dcb846d618c79571960fbaa5592056.tar.gz
chat-c3aa84a883dcb846d618c79571960fbaa5592056.tar.bz2
chat-c3aa84a883dcb846d618c79571960fbaa5592056.zip
Fixing browser store issue.
Diffstat (limited to 'webapp/stores')
-rw-r--r--webapp/stores/browser_store.jsx47
-rw-r--r--webapp/stores/error_store.jsx12
-rw-r--r--webapp/stores/user_store.jsx50
3 files changed, 45 insertions, 64 deletions
diff --git a/webapp/stores/browser_store.jsx b/webapp/stores/browser_store.jsx
index 66190f6a2..bba146e38 100644
--- a/webapp/stores/browser_store.jsx
+++ b/webapp/stores/browser_store.jsx
@@ -8,6 +8,8 @@ function getPrefix() {
return global.window.mm_current_user_id + '_';
}
+ console.log('BrowserStore tried to operate without user present'); //eslint-disable-line no-console
+
return 'unknown_';
}
@@ -34,46 +36,35 @@ class BrowserStoreClass {
}
checkVersion() {
- var currentVersion = sessionStorage.getItem('storage_version');
+ var currentVersion = this.getGlobalItem('storage_version');
if (currentVersion !== global.window.mm_config.Version) {
- sessionStorage.clear();
+ this.clearAll();
try {
- sessionStorage.setItem('storage_version', global.window.mm_config.Version);
+ this.setGlobalItem('storage_version', global.window.mm_config.Version);
} catch (e) {
// Do nothing
}
}
}
- getItem(name, defaultValue) {
- var result = null;
- try {
- result = JSON.parse(sessionStorage.getItem(getPrefix() + name));
- } catch (err) {
- result = null;
- }
-
- if (result === null && typeof defaultValue !== 'undefined') {
- result = defaultValue;
- }
-
- return result;
+ setItem(name, value) {
+ this.setGlobalItem(getPrefix() + name, value);
}
- setItem(name, value) {
- sessionStorage.setItem(getPrefix() + name, JSON.stringify(value));
+ getItem(name, defaultValue) {
+ return this.getGlobalItem(getPrefix() + name, defaultValue);
}
removeItem(name) {
- sessionStorage.removeItem(getPrefix() + name);
+ this.removeGlobalItem(getPrefix() + name);
}
setGlobalItem(name, value) {
try {
if (this.isLocalStorageSupported()) {
- localStorage.setItem(getPrefix() + name, JSON.stringify(value));
+ localStorage.setItem(name, JSON.stringify(value));
} else {
- sessionStorage.setItem(getPrefix() + name, JSON.stringify(value));
+ sessionStorage.setItem(name, JSON.stringify(value));
}
} catch (err) {
console.log('An error occurred while setting local storage, clearing all props'); //eslint-disable-line no-console
@@ -87,9 +78,9 @@ class BrowserStoreClass {
var result = null;
try {
if (this.isLocalStorageSupported()) {
- result = JSON.parse(localStorage.getItem(getPrefix() + name));
+ result = JSON.parse(localStorage.getItem(name));
} else {
- result = JSON.parse(sessionStorage.getItem(getPrefix() + name));
+ result = JSON.parse(sessionStorage.getItem(name));
}
} catch (err) {
result = null;
@@ -104,18 +95,18 @@ class BrowserStoreClass {
removeGlobalItem(name) {
if (this.isLocalStorageSupported()) {
- localStorage.removeItem(getPrefix() + name);
+ localStorage.removeItem(name);
} else {
- sessionStorage.removeItem(getPrefix() + name);
+ sessionStorage.removeItem(name);
}
}
getLastServerVersion() {
- return sessionStorage.getItem('last_server_version');
+ return this.getGlobalItem('last_server_version');
}
setLastServerVersion(version) {
- sessionStorage.setItem('last_server_version', version);
+ this.setGlobalItem('last_server_version', version);
}
signalLogout() {
@@ -185,6 +176,7 @@ class BrowserStoreClass {
const logoutId = sessionStorage.getItem('__logout__');
sessionStorage.clear();
+ localStorage.clear();
if (logoutId) {
sessionStorage.setItem('__logout__', logoutId);
@@ -222,4 +214,3 @@ class BrowserStoreClass {
var BrowserStore = new BrowserStoreClass();
export default BrowserStore;
-window.BrowserStore = BrowserStore;
diff --git a/webapp/stores/error_store.jsx b/webapp/stores/error_store.jsx
index 776375a82..7c695a335 100644
--- a/webapp/stores/error_store.jsx
+++ b/webapp/stores/error_store.jsx
@@ -35,15 +35,15 @@ class ErrorStoreClass extends EventEmitter {
}
getLastError() {
- return BrowserStore.getItem('last_error');
+ return BrowserStore.getGlobalItem('last_error');
}
storeLastError(error) {
- BrowserStore.setItem('last_error', error);
+ BrowserStore.setGlobalItem('last_error', error);
}
getConnectionErrorCount() {
- var count = BrowserStore.getItem('last_error_conn');
+ var count = BrowserStore.getGlobalItem('last_error_conn');
if (count == null) {
return 0;
@@ -53,12 +53,12 @@ class ErrorStoreClass extends EventEmitter {
}
setConnectionErrorCount(count) {
- BrowserStore.setItem('last_error_conn', count);
+ BrowserStore.setGlobalItem('last_error_conn', count);
}
clearLastError() {
- BrowserStore.removeItem('last_error');
- BrowserStore.removeItem('last_error_conn');
+ BrowserStore.removeGlobalItem('last_error');
+ BrowserStore.removeGlobalItem('last_error_conn');
}
}
diff --git a/webapp/stores/user_store.jsx b/webapp/stores/user_store.jsx
index 98cc2f3f1..4213e6e8c 100644
--- a/webapp/stores/user_store.jsx
+++ b/webapp/stores/user_store.jsx
@@ -16,7 +16,10 @@ const CHANGE_EVENT_STATUSES = 'change_statuses';
class UserStoreClass extends EventEmitter {
constructor() {
super();
- this.profileCache = null;
+ this.profiles = {};
+ this.statuses = {};
+ this.sessions = {};
+ this.audits = {};
this.currentUserId = '';
}
@@ -135,11 +138,7 @@ class UserStoreClass extends EventEmitter {
}
getProfiles() {
- if (this.profileCache !== null) {
- return this.profileCache;
- }
-
- return BrowserStore.getItem('profiles', {});
+ return this.profiles;
}
getActiveOnlyProfiles(skipCurrent) {
@@ -171,47 +170,38 @@ class UserStoreClass extends EventEmitter {
}
saveProfile(profile) {
- var ps = this.getProfiles();
- ps[profile.id] = profile;
- this.profileCache = ps;
- BrowserStore.setItem('profiles', ps);
+ this.profiles[profile.id] = profile;
}
saveProfiles(profiles) {
const currentId = this.getCurrentId();
- if (this.profileCache) {
- const currentUser = this.profileCache[currentId];
- if (currentUser) {
- if (currentId in profiles) {
- delete profiles[currentId];
- }
-
- this.profileCache = profiles;
- this.profileCache[currentId] = currentUser;
- } else {
- this.profileCache = profiles;
+ const currentUser = this.profiles[currentId];
+ if (currentUser) {
+ if (currentId in this.profiles) {
+ delete this.profiles[currentId];
}
+
+ this.profiles = profiles;
+ this.profiles[currentId] = currentUser;
} else {
- this.profileCache = profiles;
+ this.profiles = profiles;
}
-
- BrowserStore.setItem('profiles', profiles);
}
setSessions(sessions) {
- BrowserStore.setItem('sessions', sessions);
+ this.sessions = sessions;
}
getSessions() {
- return BrowserStore.getItem('sessions', {loading: true});
+ return this.sessions;
}
setAudits(audits) {
- BrowserStore.setItem('audits', audits);
+ this.audits = audits;
}
getAudits() {
- return BrowserStore.getItem('audits', {loading: true});
+ return this.audits;
}
getCurrentMentionKeys() {
@@ -252,7 +242,7 @@ class UserStoreClass extends EventEmitter {
}
pSetStatuses(statuses) {
- BrowserStore.setItem('statuses', statuses);
+ this.statuses = statuses;
}
setStatus(userId, status) {
@@ -263,7 +253,7 @@ class UserStoreClass extends EventEmitter {
}
getStatuses() {
- return BrowserStore.getItem('statuses', {});
+ return this.statuses;
}
getStatus(id) {