From 6a1755d2e32c3f3bcaa67c33f32cb5eb5ab76ea2 Mon Sep 17 00:00:00 2001
From: =Corey Hulen <corey@hulen.com>
Date: Fri, 16 Oct 2015 09:10:54 -0700
Subject: Inital support for multi-tab loging

---
 web/react/stores/user_store.jsx | 156 ++++++++++++++++++++--------------------
 1 file changed, 79 insertions(+), 77 deletions(-)

(limited to 'web/react/stores/user_store.jsx')

diff --git a/web/react/stores/user_store.jsx b/web/react/stores/user_store.jsx
index fa74f812d..575e6d51e 100644
--- a/web/react/stores/user_store.jsx
+++ b/web/react/stores/user_store.jsx
@@ -3,7 +3,6 @@
 
 var AppDispatcher = require('../dispatcher/app_dispatcher.jsx');
 var EventEmitter = require('events').EventEmitter;
-var client = require('../utils/client.jsx');
 
 var Constants = require('../utils/constants.jsx');
 var ActionTypes = Constants.ActionTypes;
@@ -38,13 +37,11 @@ class UserStoreClass extends EventEmitter {
         this.emitToggleImportModal = this.emitToggleImportModal.bind(this);
         this.addImportModalListener = this.addImportModalListener.bind(this);
         this.removeImportModalListener = this.removeImportModalListener.bind(this);
-        this.setCurrentId = this.setCurrentId.bind(this);
         this.getCurrentId = this.getCurrentId.bind(this);
         this.getCurrentUser = this.getCurrentUser.bind(this);
         this.setCurrentUser = this.setCurrentUser.bind(this);
         this.getLastEmail = this.getLastEmail.bind(this);
         this.setLastEmail = this.setLastEmail.bind(this);
-        this.removeCurrentUser = this.removeCurrentUser.bind(this);
         this.hasProfile = this.hasProfile.bind(this);
         this.getProfile = this.getProfile.bind(this);
         this.getProfileByUsername = this.getProfileByUsername.bind(this);
@@ -52,9 +49,6 @@ class UserStoreClass extends EventEmitter {
         this.getProfiles = this.getProfiles.bind(this);
         this.getActiveOnlyProfiles = this.getActiveOnlyProfiles.bind(this);
         this.saveProfile = this.saveProfile.bind(this);
-        this.pStoreProfiles = this.pStoreProfiles.bind(this);
-        this.pGetProfiles = this.pGetProfiles.bind(this);
-        this.pGetProfilesUsernameMap = this.pGetProfilesUsernameMap.bind(this);
         this.setSessions = this.setSessions.bind(this);
         this.getSessions = this.getSessions.bind(this);
         this.setAudits = this.setAudits.bind(this);
@@ -62,138 +56,155 @@ class UserStoreClass extends EventEmitter {
         this.setTeams = this.setTeams.bind(this);
         this.getTeams = this.getTeams.bind(this);
         this.getCurrentMentionKeys = this.getCurrentMentionKeys.bind(this);
-        this.getLastVersion = this.getLastVersion.bind(this);
-        this.setLastVersion = this.setLastVersion.bind(this);
         this.setStatuses = this.setStatuses.bind(this);
         this.pSetStatuses = this.pSetStatuses.bind(this);
         this.setStatus = this.setStatus.bind(this);
         this.getStatuses = this.getStatuses.bind(this);
         this.getStatus = this.getStatus.bind(this);
-
-        this.gCurrentId = null;
     }
 
     emitChange(userId) {
         this.emit(CHANGE_EVENT, userId);
     }
+
     addChangeListener(callback) {
         this.on(CHANGE_EVENT, callback);
     }
+
     removeChangeListener(callback) {
         this.removeListener(CHANGE_EVENT, callback);
     }
+
     emitSessionsChange() {
         this.emit(CHANGE_EVENT_SESSIONS);
     }
+
     addSessionsChangeListener(callback) {
         this.on(CHANGE_EVENT_SESSIONS, callback);
     }
+
     removeSessionsChangeListener(callback) {
         this.removeListener(CHANGE_EVENT_SESSIONS, callback);
     }
+
     emitAuditsChange() {
         this.emit(CHANGE_EVENT_AUDITS);
     }
+
     addAuditsChangeListener(callback) {
         this.on(CHANGE_EVENT_AUDITS, callback);
     }
+
     removeAuditsChangeListener(callback) {
         this.removeListener(CHANGE_EVENT_AUDITS, callback);
     }
+
     emitTeamsChange() {
         this.emit(CHANGE_EVENT_TEAMS);
     }
+
     addTeamsChangeListener(callback) {
         this.on(CHANGE_EVENT_TEAMS, callback);
     }
+
     removeTeamsChangeListener(callback) {
         this.removeListener(CHANGE_EVENT_TEAMS, callback);
     }
+
     emitStatusesChange() {
         this.emit(CHANGE_EVENT_STATUSES);
     }
+
     addStatusesChangeListener(callback) {
         this.on(CHANGE_EVENT_STATUSES, callback);
     }
+
     removeStatusesChangeListener(callback) {
         this.removeListener(CHANGE_EVENT_STATUSES, callback);
     }
+
     emitToggleImportModal(value) {
         this.emit(TOGGLE_IMPORT_MODAL_EVENT, value);
     }
+
     addImportModalListener(callback) {
         this.on(TOGGLE_IMPORT_MODAL_EVENT, callback);
     }
+
     removeImportModalListener(callback) {
         this.removeListener(TOGGLE_IMPORT_MODAL_EVENT, callback);
     }
-    setCurrentId(id) {
-        this.gCurrentId = id;
-        if (id == null) {
-            BrowserStore.removeGlobalItem('current_user_id');
-        } else {
-            BrowserStore.setGlobalItem('current_user_id', id);
+
+    getCurrentUser() {
+        if (this.getProfiles()[global.window.mm_user.id] == null) {
+            this.saveProfile(global.window.mm_user);
         }
+
+        return global.window.mm_user;
     }
-    getCurrentId(skipFetch) {
-        var currentId = this.gCurrentId;
 
-        if (currentId == null) {
-            currentId = BrowserStore.getGlobalItem('current_user_id');
-            this.gCurrentId = currentId;
-        }
+    setCurrentUser(user) {
+        var oldUser = global.window.mm_user;
 
-        // this is a special case to force fetch the
-        // current user if it's missing
-        // it's synchronous to block rendering
-        if (currentId == null && !skipFetch) {
-            var me = client.getMeSynchronous();
-            if (me != null) {
-                this.setCurrentUser(me);
-                currentId = me.id;
-            }
+        if (oldUser.id === user.id) {
+            global.window.mm_user = user;
+            this.saveProfile(user);
+        } else {
+            throw new Error('Problem with setCurrentUser old_user_id=' + oldUser.id + ' new_user_id=' + user.id);
         }
-
-        return currentId;
     }
-    getCurrentUser() {
-        if (this.getCurrentId() == null) {
-            return null;
+
+    getCurrentId() {
+        var user = global.window.mm_user;
+
+        if (user) {
+            return user.id;
         }
 
-        return this.pGetProfiles()[this.getCurrentId()];
-    }
-    setCurrentUser(user) {
-        this.setCurrentId(user.id);
-        this.saveProfile(user);
+        return null;
     }
+
     getLastEmail() {
-        return BrowserStore.getItem('last_email', '');
+        return BrowserStore.getGlobalItem('last_email', '');
     }
+
     setLastEmail(email) {
-        BrowserStore.setItem('last_email', email);
-    }
-    removeCurrentUser() {
-        this.setCurrentId(null);
+        BrowserStore.setGlobalItem('last_email', email);
     }
+
     hasProfile(userId) {
-        return this.pGetProfiles()[userId] != null;
+        return this.getProfiles()[userId] != null;
     }
+
     getProfile(userId) {
-        return this.pGetProfiles()[userId];
+        return this.getProfiles()[userId];
     }
+
     getProfileByUsername(username) {
-        return this.pGetProfilesUsernameMap()[username];
+        return this.getProfilesUsernameMap()[username];
     }
+
     getProfilesUsernameMap() {
-        return this.pGetProfilesUsernameMap();
+        var profileUsernameMap = {};
+
+        var profiles = this.getProfiles();
+        for (var key in profiles) {
+            if (profiles.hasOwnProperty(key)) {
+                var profile = profiles[key];
+                profileUsernameMap[profile.username] = profile;
+            }
+        }
+
+        return profileUsernameMap;
     }
+
     getProfiles() {
-        return this.pGetProfiles();
+        return BrowserStore.getItem('profiles', {});
     }
+
     getActiveOnlyProfiles() {
         var active = {};
-        var current = this.pGetProfiles();
+        var current = this.getProfiles();
 
         for (var key in current) {
             if (current[key].delete_at === 0) {
@@ -203,45 +214,37 @@ class UserStoreClass extends EventEmitter {
 
         return active;
     }
+
     saveProfile(profile) {
-        var ps = this.pGetProfiles();
+        var ps = this.getProfiles();
         ps[profile.id] = profile;
-        this.pStoreProfiles(ps);
-    }
-    pStoreProfiles(profiles) {
-        BrowserStore.setItem('profiles', profiles);
-        var profileUsernameMap = {};
-        for (var id in profiles) {
-            if (profiles.hasOwnProperty(id)) {
-                profileUsernameMap[profiles[id].username] = profiles[id];
-            }
-        }
-        BrowserStore.setItem('profileUsernameMap', profileUsernameMap);
-    }
-    pGetProfiles() {
-        return BrowserStore.getItem('profiles', {});
-    }
-    pGetProfilesUsernameMap() {
-        return BrowserStore.getItem('profileUsernameMap', {});
+        BrowserStore.setItem('profiles', ps);
     }
+
     setSessions(sessions) {
         BrowserStore.setItem('sessions', sessions);
     }
+
     getSessions() {
         return BrowserStore.getItem('sessions', {loading: true});
     }
+
     setAudits(audits) {
         BrowserStore.setItem('audits', audits);
     }
+
     getAudits() {
         return BrowserStore.getItem('audits', {loading: true});
     }
+
     setTeams(teams) {
         BrowserStore.setItem('teams', teams);
     }
+
     getTeams() {
         return BrowserStore.getItem('teams', []);
     }
+
     getCurrentMentionKeys() {
         var user = this.getCurrentUser();
 
@@ -269,28 +272,27 @@ class UserStoreClass extends EventEmitter {
 
         return keys;
     }
-    getLastVersion() {
-        return BrowserStore.getItem('last_version', '');
-    }
-    setLastVersion(version) {
-        BrowserStore.setItem('last_version', version);
-    }
+
     setStatuses(statuses) {
         this.pSetStatuses(statuses);
         this.emitStatusesChange();
     }
+
     pSetStatuses(statuses) {
         BrowserStore.setItem('statuses', statuses);
     }
+
     setStatus(userId, status) {
         var statuses = this.getStatuses();
         statuses[userId] = status;
         this.pSetStatuses(statuses);
         this.emitStatusesChange();
     }
+
     getStatuses() {
         return BrowserStore.getItem('statuses', {});
     }
+
     getStatus(id) {
         return this.getStatuses()[id];
     }
@@ -299,7 +301,7 @@ class UserStoreClass extends EventEmitter {
 var UserStore = new UserStoreClass();
 UserStore.setMaxListeners(0);
 
-UserStore.dispatchToken = AppDispatcher.register(function registry(payload) {
+UserStore.dispatchToken = AppDispatcher.register((payload) => {
     var action = payload.action;
 
     switch (action.type) {
-- 
cgit v1.2.3-1-g7c22

