summaryrefslogtreecommitdiffstats
path: root/web/react/stores/team_store.jsx
diff options
context:
space:
mode:
authorJoramWilander <jwawilander@gmail.com>2015-06-18 10:40:46 -0400
committerJoramWilander <jwawilander@gmail.com>2015-06-18 10:40:46 -0400
commit308c4f3ce9330f4ac04cc04495533e6f2ad87f53 (patch)
tree8b632d86e86855fe52e35ebf32d65a79db605e74 /web/react/stores/team_store.jsx
parent1dc3a5f26d95ca87f2bfe1a57caa4ac9b077434a (diff)
downloadchat-308c4f3ce9330f4ac04cc04495533e6f2ad87f53.tar.gz
chat-308c4f3ce9330f4ac04cc04495533e6f2ad87f53.tar.bz2
chat-308c4f3ce9330f4ac04cc04495533e6f2ad87f53.zip
added team store, team settings menu, and the ability to turn on valet feature from client
Diffstat (limited to 'web/react/stores/team_store.jsx')
-rw-r--r--web/react/stores/team_store.jsx114
1 files changed, 114 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..e29106b22
--- /dev/null
+++ b/web/react/stores/team_store.jsx
@@ -0,0 +1,114 @@
+// 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 current = null;
+ var c = this._getTeams();
+
+ c.some(function(team) {
+ if (team.id == id) {
+ current = team;
+ return true;
+ }
+ return false;
+ });
+
+ return current;
+ },
+ getByName: function(name) {
+ var current = null;
+ var c = this._getTeams();
+
+ c.some(function(team) {
+ if (team.name == name) {
+ current = team;
+ return true;
+ }
+
+ return false;
+
+ });
+
+ return current;
+
+ },
+ 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("teams", JSON.stringify(teams));
+ },
+ _getTeams: function() {
+ var teams = [];
+ try {
+ teams = JSON.parse(sessionStorage.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;