summaryrefslogtreecommitdiff
path: root/src/containers/simulations/VisibleSimulationAuthList.js
blob: ffc74d9ec798bfd0303ac0799d7caf2d0717194d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
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.simulationList.authorizationsOfCurrentUser.map(
    authorizationIds => {
      const authorization = state.objects.authorization[authorizationIds];
      authorization.user = state.objects.user[authorization.userId];
      authorization.simulation =
        state.objects.simulation[authorization.simulationId];
      return authorization;
    }
  );

  return {
    authorizations: getVisibleSimulationAuths(
      denormalizedAuthorizations,
      state.simulationList.authVisibilityFilter
    )
  };
};

const VisibleSimulationAuthList = connect(mapStateToProps)(SimulationList);

export default VisibleSimulationAuthList;