summaryrefslogtreecommitdiff
path: root/src/reducers
diff options
context:
space:
mode:
Diffstat (limited to 'src/reducers')
-rw-r--r--src/reducers/auth.js8
-rw-r--r--src/reducers/index.js6
-rw-r--r--src/reducers/objects.js44
-rw-r--r--src/reducers/projects.js15
4 files changed, 61 insertions, 12 deletions
diff --git a/src/reducers/auth.js b/src/reducers/auth.js
index 0d01b300..a65b3b3e 100644
--- a/src/reducers/auth.js
+++ b/src/reducers/auth.js
@@ -1,12 +1,12 @@
-import {COMPLETE_LOGIN, LOG_OUT} from "../actions/auth";
+import {LOG_IN_SUCCEEDED, LOG_OUT} from "../actions/auth";
-export const auth = (state = {}, action) => {
+export function auth(state = {}, action) {
switch (action.type) {
- case COMPLETE_LOGIN:
+ case LOG_IN_SUCCEEDED:
return action.payload;
case LOG_OUT:
return {};
default:
return state;
}
-};
+}
diff --git a/src/reducers/index.js b/src/reducers/index.js
index 4e35f6e8..71379a6f 100644
--- a/src/reducers/index.js
+++ b/src/reducers/index.js
@@ -1,10 +1,12 @@
import {combineReducers} from "redux";
import {auth} from "./auth";
-import {authorizations, authVisibilityFilter, newProjectModalVisible} from "./projects";
+import {objects} from "./objects";
+import {authorizationsOfCurrentUser, authVisibilityFilter, newProjectModalVisible} from "./projects";
const rootReducer = combineReducers({
auth,
- authorizations,
+ objects,
+ authorizationsOfCurrentUser,
newProjectModalVisible,
authVisibilityFilter,
});
diff --git a/src/reducers/objects.js b/src/reducers/objects.js
new file mode 100644
index 00000000..69e68ca7
--- /dev/null
+++ b/src/reducers/objects.js
@@ -0,0 +1,44 @@
+import {combineReducers} from "redux";
+import {ADD_TO_AUTHORIZATION_STORE, ADD_TO_SIMULATION_STORE, ADD_TO_USER_STORE} from "../actions/object-stores";
+
+export const objects = combineReducers({
+ simulations,
+ authorizations,
+ users,
+});
+
+function simulations(state = {}, action) {
+ switch (action.type) {
+ case ADD_TO_SIMULATION_STORE:
+ return Object.assign(
+ state,
+ {[action.simulation.id]: action.simulation}
+ );
+ default:
+ return state;
+ }
+}
+
+function authorizations(state = {}, action) {
+ switch (action.type) {
+ case ADD_TO_AUTHORIZATION_STORE:
+ return Object.assign(
+ state,
+ {[[action.authorization.userId, action.authorization.simulationId]]: action.authorization}
+ );
+ default:
+ return state;
+ }
+}
+
+function users(state = {}, action) {
+ switch (action.type) {
+ case ADD_TO_USER_STORE:
+ return Object.assign(
+ state,
+ {[action.user.id]: action.user}
+ );
+ default:
+ return state;
+ }
+}
diff --git a/src/reducers/projects.js b/src/reducers/projects.js
index b6450fd7..ba3c792d 100644
--- a/src/reducers/projects.js
+++ b/src/reducers/projects.js
@@ -5,9 +5,12 @@ import {
OPEN_NEW_PROJECT_MODAL,
SET_AUTH_VISIBILITY_FILTER
} from "../actions/projects";
+import {FETCH_AUTHORIZATIONS_OF_CURRENT_USER_SUCCEEDED} from "../actions/users";
-export const authorizations = (state = [], action) => {
+export function authorizationsOfCurrentUser(state = [], action) {
switch (action.type) {
+ case FETCH_AUTHORIZATIONS_OF_CURRENT_USER_SUCCEEDED:
+ return action.authorizationsOfCurrentUser;
case ADD_PROJECT:
return [
...state,
@@ -22,9 +25,9 @@ export const authorizations = (state = [], action) => {
default:
return state;
}
-};
+}
-export const newProjectModalVisible = (state = false, action) => {
+export function newProjectModalVisible(state = false, action) {
switch (action.type) {
case OPEN_NEW_PROJECT_MODAL:
return true;
@@ -33,13 +36,13 @@ export const newProjectModalVisible = (state = false, action) => {
default:
return state;
}
-};
+}
-export const authVisibilityFilter = (state = "SHOW_ALL", action) => {
+export function authVisibilityFilter(state = "SHOW_ALL", action) {
switch (action.type) {
case SET_AUTH_VISIBILITY_FILTER:
return action.filter;
default:
return state;
}
-};
+}