diff options
Diffstat (limited to 'src/reducers')
| -rw-r--r-- | src/reducers/auth.js | 8 | ||||
| -rw-r--r-- | src/reducers/index.js | 6 | ||||
| -rw-r--r-- | src/reducers/objects.js | 44 | ||||
| -rw-r--r-- | src/reducers/projects.js | 15 |
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; } -}; +} |
