@@ -3,16 +3,18 @@ import { connect } from 'react-redux'
3
3
import _ from 'lodash'
4
4
import PT from 'prop-types'
5
5
import UsersComponent from '../../components/Users'
6
- import { loadProject , reloadProjectMembers } from '../../actions/projects'
7
6
import { PROJECT_ROLES } from '../../config/constants'
7
+ import { fetchProjectById } from '../../services/projects'
8
8
9
9
class Users extends Component {
10
10
constructor ( props ) {
11
11
super ( props )
12
12
13
13
this . state = {
14
- loginUserRoleInProject : ''
14
+ loginUserRoleInProject : '' ,
15
+ projectMembers : null
15
16
}
17
+ this . loadProject = this . loadProject . bind ( this )
16
18
}
17
19
18
20
componentDidMount ( ) {
@@ -27,9 +29,13 @@ class Users extends Component {
27
29
}
28
30
29
31
componentWillReceiveProps ( nextProps ) {
30
- const { projectDetail, loggedInUser } = nextProps
31
- if ( projectDetail && loggedInUser ) {
32
- const projectMembers = projectDetail . members
32
+ const { loggedInUser } = nextProps
33
+ const { projectMembers } = this . state
34
+ this . updateLoginUserRoleInProject ( projectMembers , loggedInUser )
35
+ }
36
+
37
+ updateLoginUserRoleInProject ( projectMembers , loggedInUser ) {
38
+ if ( projectMembers && loggedInUser ) {
33
39
const loginUserProjectInfo = _ . find ( projectMembers , { userId : loggedInUser . userId } )
34
40
if ( loginUserProjectInfo && this . state . loginUserRoleInProject !== loginUserProjectInfo . role ) {
35
41
this . setState ( {
@@ -39,52 +45,49 @@ class Users extends Component {
39
45
}
40
46
}
41
47
48
+ loadProject ( projectId ) {
49
+ fetchProjectById ( projectId ) . then ( ( project ) => {
50
+ const projectMembers = _ . get ( project , 'members' )
51
+ this . setState ( {
52
+ projectMembers
53
+ } )
54
+ const { loggedInUser } = this . props
55
+ this . updateLoginUserRoleInProject ( projectMembers , loggedInUser )
56
+ } )
57
+ }
58
+
42
59
render ( ) {
43
60
const {
44
61
projects,
45
- loadProject,
46
- projectMembers,
47
- auth,
48
- reloadProjectMembers,
49
- projectDetail
62
+ auth
50
63
} = this . props
64
+ const {
65
+ projectMembers
66
+ } = this . state
51
67
return (
52
68
< UsersComponent
53
- projectDetail = { projectDetail }
54
69
projects = { projects }
55
- loadProject = { loadProject }
70
+ loadProject = { this . loadProject }
56
71
projectMembers = { projectMembers }
57
72
auth = { auth }
58
- reloadProjectMembers = { reloadProjectMembers }
59
73
isEditable = { this . isEditable ( ) }
60
74
/>
61
75
)
62
76
}
63
77
}
64
78
65
- const mapStateToProps = ( { sidebar, challenges , auth, projects } ) => {
79
+ const mapStateToProps = ( { sidebar, auth } ) => {
66
80
return {
67
81
projects : sidebar . projects ,
68
- projectMembers : _ . get ( challenges , 'metadata.members' ) ,
69
- projectDetail : projects . projectDetail ,
70
82
auth,
71
83
loggedInUser : auth . user
72
84
}
73
85
}
74
86
75
- const mapDispatchToProps = {
76
- loadProject,
77
- reloadProjectMembers
78
- }
79
-
80
87
Users . propTypes = {
81
- loadProject : PT . func . isRequired ,
82
- reloadProjectMembers : PT . func . isRequired ,
83
88
projects : PT . arrayOf ( PT . object ) ,
84
- projectMembers : PT . arrayOf ( PT . object ) ,
85
89
auth : PT . object ,
86
- projectDetail : PT . object ,
87
90
loggedInUser : PT . object
88
91
}
89
92
90
- export default connect ( mapStateToProps , mapDispatchToProps ) ( Users )
93
+ export default connect ( mapStateToProps ) ( Users )
0 commit comments