diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/api/sagas/objects.js | 6 | ||||
| -rw-r--r-- | src/containers/auth/Logout.js | 6 | ||||
| -rw-r--r-- | src/containers/simulations/VisibleSimulationAuthList.js | 10 | ||||
| -rw-r--r-- | src/reducers/objects.js | 12 | ||||
| -rw-r--r-- | src/store/denormalizer.js | 16 |
5 files changed, 30 insertions, 20 deletions
diff --git a/src/api/sagas/objects.js b/src/api/sagas/objects.js index 9bc98e6f..fd7830b3 100644 --- a/src/api/sagas/objects.js +++ b/src/api/sagas/objects.js @@ -4,9 +4,9 @@ import {getSimulation} from "../routes/simulations"; import {getUser} from "../routes/users"; const selectors = { - simulation: state => state.objects.simulations, - user: state => state.objects.users, - authorization: state => state.objects.authorizations, + simulation: state => state.objects.simulation, + user: state => state.objects.user, + authorization: state => state.objects.authorization, }; function* fetchAndStoreObject(objectType, id, apiCall, addToStore) { diff --git a/src/containers/auth/Logout.js b/src/containers/auth/Logout.js index 8d329c1f..ec2b8842 100644 --- a/src/containers/auth/Logout.js +++ b/src/containers/auth/Logout.js @@ -2,10 +2,6 @@ import {connect} from "react-redux"; import {logOut} from "../../actions/auth"; import LogoutButton from "../../components/navigation/LogoutButton"; -const mapStateToProps = state => { - return {}; -}; - const mapDispatchToProps = dispatch => { return { onLogout: () => dispatch(logOut()), @@ -13,7 +9,7 @@ const mapDispatchToProps = dispatch => { }; const Logout = connect( - mapStateToProps, + undefined, mapDispatchToProps )(LogoutButton); diff --git a/src/containers/simulations/VisibleSimulationAuthList.js b/src/containers/simulations/VisibleSimulationAuthList.js index 07740435..2a676e73 100644 --- a/src/containers/simulations/VisibleSimulationAuthList.js +++ b/src/containers/simulations/VisibleSimulationAuthList.js @@ -1,5 +1,6 @@ import {connect} from "react-redux"; import SimulationList from "../../components/simulations/SimulationAuthList"; +import {denormalize} from "../../store/denormalizer"; const getVisibleSimulationAuths = (simulationAuths, filter) => { switch (filter) { @@ -15,12 +16,9 @@ const getVisibleSimulationAuths = (simulationAuths, filter) => { }; const mapStateToProps = state => { - const denormalizedAuthorizations = state.authorizationsOfCurrentUser.map(authorizationIds => { - const authorization = Object.assign({}, state.objects.authorizations[authorizationIds]); - authorization.simulation = state.objects.simulations[authorization.simulationId]; - authorization.user = state.objects.users[authorization.userId]; - return authorization; - }); + const denormalizedAuthorizations = state.authorizationsOfCurrentUser.map(authorizationIds => + denormalize(state, "authorization", authorizationIds) + ); return { authorizations: getVisibleSimulationAuths(denormalizedAuthorizations, state.authVisibilityFilter) diff --git a/src/reducers/objects.js b/src/reducers/objects.js index 40bd3524..6381c8d9 100644 --- a/src/reducers/objects.js +++ b/src/reducers/objects.js @@ -2,12 +2,12 @@ import {combineReducers} from "redux"; import {ADD_TO_AUTHORIZATION_STORE, ADD_TO_SIMULATION_STORE, ADD_TO_USER_STORE} from "../actions/objects"; export const objects = combineReducers({ - simulations, - authorizations, - users, + simulation, + authorization, + user, }); -function simulations(state = {}, action) { +function simulation(state = {}, action) { switch (action.type) { case ADD_TO_SIMULATION_STORE: return Object.assign( @@ -19,7 +19,7 @@ function simulations(state = {}, action) { } } -function authorizations(state = {}, action) { +function authorization(state = {}, action) { switch (action.type) { case ADD_TO_AUTHORIZATION_STORE: return Object.assign( @@ -31,7 +31,7 @@ function authorizations(state = {}, action) { } } -function users(state = {}, action) { +function user(state = {}, action) { switch (action.type) { case ADD_TO_USER_STORE: return Object.assign( diff --git a/src/store/denormalizer.js b/src/store/denormalizer.js new file mode 100644 index 00000000..fbf15430 --- /dev/null +++ b/src/store/denormalizer.js @@ -0,0 +1,16 @@ +export function denormalize(state, objectType, id) { + const object = Object.assign({}, state.objects[objectType][id]); + + for (let prop in object) { + if (!object.hasOwnProperty(prop)) { + continue; + } + + if (prop.endsWith("Id")) { + const propType = prop.replace("Id", ""); + object[propType] = state.objects[propType][object[prop]]; + } + } + + return object; +} |
