summaryrefslogtreecommitdiffstats
path: root/web/react/stores/team_store.jsx
diff options
context:
space:
mode:
authorCorey Hulen <corey@hulen.com>2015-06-25 11:20:19 -0400
committerCorey Hulen <corey@hulen.com>2015-06-25 11:20:19 -0400
commit049a41f9beb3b55a4eb84d4730011b257aaf26b3 (patch)
tree7ea9f7eeaa753d8ceac1f955b6b9af061fe4d751 /web/react/stores/team_store.jsx
parentbfe8d13cd15d7e4ba7da76d3b202109d2a4b7847 (diff)
parent40b9fc5e398f8212feca10459b654230af872298 (diff)
downloadchat-049a41f9beb3b55a4eb84d4730011b257aaf26b3.tar.gz
chat-049a41f9beb3b55a4eb84d4730011b257aaf26b3.tar.bz2
chat-049a41f9beb3b55a4eb84d4730011b257aaf26b3.zip
Merge pull request #27 from mattermost/mm-1240
fixes mm-1240 adds ability to turn valet feature on
Diffstat (limited to 'web/react/stores/team_store.jsx')
-rw-r--r--web/react/stores/team_store.jsx100
1 files changed, 100 insertions, 0 deletions
diff --git a/web/react/stores/team_store.jsx b/web/react/stores/team_store.jsx
new file mode 100644
index 000000000..e95daeeba
--- /dev/null
+++ b/web/react/stores/team_store.jsx
@@ -0,0 +1,100 @@
+// Copyright (c) 2015 Spinpunch, Inc. All Rights Reserved.
+// See License.txt for license information.
+
+var AppDispatcher = require('../dispatcher/app_dispatcher.jsx');
+var EventEmitter = require('events').EventEmitter;
+var assign = require('object-assign');
+
+var Constants = require('../utils/constants.jsx');
+var ActionTypes = Constants.ActionTypes;
+
+
+var CHANGE_EVENT = 'change';
+
+var TeamStore = assign({}, EventEmitter.prototype, {
+ emitChange: function() {
+ this.emit(CHANGE_EVENT);
+ },
+ addChangeListener: function(callback) {
+ this.on(CHANGE_EVENT, callback);
+ },
+ removeChangeListener: function(callback) {
+ this.removeListener(CHANGE_EVENT, callback);
+ },
+ get: function(id) {
+ var c = this._getTeams();
+ return c[id];
+ },
+ getByName: function(name) {
+ var current = null;
+ var t = this._getTeams();
+
+ for (id in t) {
+ if (t[id].name == name) {
+ return t[id];
+ }
+ }
+
+ return null;
+ },
+ getAll: function() {
+ return this._getTeams();
+ },
+ setCurrentId: function(id) {
+ if (id == null)
+ sessionStorage.removeItem("current_team_id");
+ else
+ sessionStorage.setItem("current_team_id", id);
+ },
+ getCurrentId: function() {
+ return sessionStorage.getItem("current_team_id");
+ },
+ getCurrent: function() {
+ var currentId = TeamStore.getCurrentId();
+
+ if (currentId != null)
+ return this.get(currentId);
+ else
+ return null;
+ },
+ storeTeam: function(team) {
+ var teams = this._getTeams();
+ teams[team.id] = team;
+ this._storeTeams(teams);
+ },
+ _storeTeams: function(teams) {
+ sessionStorage.setItem("user_teams", JSON.stringify(teams));
+ },
+ _getTeams: function() {
+ var teams = {};
+
+ try {
+ teams = JSON.parse(sessionStorage.user_teams);
+ }
+ catch (err) {
+ }
+
+ return teams;
+ }
+});
+
+TeamStore.dispatchToken = AppDispatcher.register(function(payload) {
+ var action = payload.action;
+
+ switch(action.type) {
+
+ case ActionTypes.CLICK_TEAM:
+ TeamStore.setCurrentId(action.id);
+ TeamStore.emitChange();
+ break;
+
+ case ActionTypes.RECIEVED_TEAM:
+ TeamStore.storeTeam(action.team);
+ TeamStore.emitChange();
+ break;
+
+ default:
+ }
+});
+
+module.exports = TeamStore;