diff options
Diffstat (limited to 'src/containers/simulations/VisibleSimulationAuthList.js')
| -rw-r--r-- | src/containers/simulations/VisibleSimulationAuthList.js | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/containers/simulations/VisibleSimulationAuthList.js b/src/containers/simulations/VisibleSimulationAuthList.js new file mode 100644 index 00000000..07740435 --- /dev/null +++ b/src/containers/simulations/VisibleSimulationAuthList.js @@ -0,0 +1,32 @@ +import {connect} from "react-redux"; +import SimulationList from "../../components/simulations/SimulationAuthList"; + +const getVisibleSimulationAuths = (simulationAuths, filter) => { + switch (filter) { + case 'SHOW_ALL': + return simulationAuths; + case 'SHOW_OWN': + return simulationAuths.filter(simulationAuth => simulationAuth.authorizationLevel === "OWN"); + case 'SHOW_SHARED': + return simulationAuths.filter(simulationAuth => simulationAuth.authorizationLevel !== "OWN"); + default: + return simulationAuths; + } +}; + +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; + }); + + return { + authorizations: getVisibleSimulationAuths(denormalizedAuthorizations, state.authVisibilityFilter) + }; +}; + +const VisibleSimulationAuthList = connect(mapStateToProps)(SimulationList); + +export default VisibleSimulationAuthList; |
