mirror of
https://github.com/mattermost/mattermost.git
synced 2025-02-25 18:55:24 -06:00
Fixing browser store issue.
This commit is contained in:
@@ -6,6 +6,7 @@ import * as AsyncClient from 'utils/async_client.jsx';
|
||||
import * as GlobalActions from 'action_creators/global_actions.jsx';
|
||||
import UserStore from 'stores/user_store.jsx';
|
||||
import ChannelStore from 'stores/channel_store.jsx';
|
||||
import BrowserStore from 'stores/browser_store.jsx';
|
||||
import PreferenceStore from 'stores/preference_store.jsx';
|
||||
import * as Utils from 'utils/utils.jsx';
|
||||
import Constants from 'utils/constants.jsx';
|
||||
@@ -84,7 +85,7 @@ export default class LoggedIn extends React.Component {
|
||||
// when one tab on a browser logs out, it sets __logout__ in localStorage to trigger other tabs to log out
|
||||
if (e.originalEvent.key === '__logout__' && e.originalEvent.storageArea === localStorage && e.originalEvent.newValue) {
|
||||
// make sure it isn't this tab that is sending the logout signal (only necessary for IE11)
|
||||
if (window.BrowserStore.isSignallingLogout(e.originalEvent.newValue)) {
|
||||
if (BrowserStore.isSignallingLogout(e.originalEvent.newValue)) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -94,7 +95,7 @@ export default class LoggedIn extends React.Component {
|
||||
|
||||
if (e.originalEvent.key === '__login__' && e.originalEvent.storageArea === localStorage && e.originalEvent.newValue) {
|
||||
// make sure it isn't this tab that is sending the logout signal (only necessary for IE11)
|
||||
if (window.BrowserStore.isSignallingLogin(e.originalEvent.newValue)) {
|
||||
if (BrowserStore.isSignallingLogin(e.originalEvent.newValue)) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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];
|
||||
}
|
||||
} else {
|
||||
this.profileCache = profiles;
|
||||
}
|
||||
|
||||
BrowserStore.setItem('profiles', profiles);
|
||||
this.profiles = profiles;
|
||||
this.profiles[currentId] = currentUser;
|
||||
} else {
|
||||
this.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) {
|
||||
|
||||
Reference in New Issue
Block a user