From 308c4f3ce9330f4ac04cc04495533e6f2ad87f53 Mon Sep 17 00:00:00 2001
From: JoramWilander <jwawilander@gmail.com>
Date: Thu, 18 Jun 2015 10:40:46 -0400
Subject: added team store, team settings menu, and the ability to turn on
 valet feature from client

---
 web/react/stores/team_store.jsx | 114 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 114 insertions(+)
 create mode 100644 web/react/stores/team_store.jsx

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

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;
-- 
cgit v1.2.3-1-g7c22


From 4af08121e6ad32fe8ab228f2a64b139a62275b3c Mon Sep 17 00:00:00 2001
From: JoramWilander <jwawilander@gmail.com>
Date: Thu, 18 Jun 2015 12:13:56 -0400
Subject: fix command comparator and team store

---
 web/react/stores/team_store.jsx | 38 ++++++++++++--------------------------
 1 file changed, 12 insertions(+), 26 deletions(-)

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

diff --git a/web/react/stores/team_store.jsx b/web/react/stores/team_store.jsx
index e29106b22..e95daeeba 100644
--- a/web/react/stores/team_store.jsx
+++ b/web/react/stores/team_store.jsx
@@ -22,35 +22,20 @@ var TeamStore = assign({}, EventEmitter.prototype, {
     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;
+    return c[id];
   },
   getByName: function(name) {
     var current = null;
-    var c = this._getTeams();
-
-    c.some(function(team) {
-      if (team.name == name) {
-        current = team;
-        return true;
-      }
+    var t = this._getTeams();
 
-      return false;
-
-    });
-
-    return current;
+    for (id in t) {
+        if (t[id].name == name) {
+            return t[id];
+        }
+    }
 
+    return null;
   },
   getAll: function() {
     return this._getTeams();
@@ -78,12 +63,13 @@ var TeamStore = assign({}, EventEmitter.prototype, {
     this._storeTeams(teams);
   },
   _storeTeams: function(teams) {
-    sessionStorage.setItem("teams", JSON.stringify(teams));
+    sessionStorage.setItem("user_teams", JSON.stringify(teams));
   },
   _getTeams: function() {
-    var teams = [];
+    var teams = {};
+
     try {
-        teams = JSON.parse(sessionStorage.teams);
+        teams = JSON.parse(sessionStorage.user_teams);
     }
     catch (err) {
     }
-- 
cgit v1.2.3-1-g7c22

