summaryrefslogtreecommitdiff
path: root/src/containers/projects/VisibleProjectAuthList.js
blob: f668711e666b10b12d2785ccd25bc5c23d9cd13a (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
import {connect} from "react-redux";
import ProjectList from "../../components/projects/ProjectAuthList";

const getVisibleProjectAuths = (projectAuths, filter) => {
    switch (filter) {
        case 'SHOW_ALL':
            return projectAuths;
        case 'SHOW_OWN':
            return projectAuths.filter(projectAuth => projectAuth.authorizationLevel === "OWN");
        case 'SHOW_SHARED':
            return projectAuths.filter(projectAuth => projectAuth.authorizationLevel !== "OWN");
        default:
            return projectAuths;
    }
};

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: getVisibleProjectAuths(denormalizedAuthorizations, state.authVisibilityFilter)
    };
};

const VisibleProjectAuthList = connect(mapStateToProps)(ProjectList);

export default VisibleProjectAuthList;