Skip to content

Commit 48318ac

Browse files
committed
Admin are not able to see all users of the project
https://topcoder.atlassian.net/browse/PROD-4313
1 parent 10e90f6 commit 48318ac

File tree

3 files changed

+40
-34
lines changed

3 files changed

+40
-34
lines changed

src/components/UserCard/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ class UserCard extends Component {
4747
try {
4848
await updateProjectMemberRole(user.projectId, user.id, newRole)
4949
await wait(1000)
50-
reloadProjectMembers(user.projectId)
50+
reloadProjectMembers()
5151
this.setState({ showSuccessModal: true })
5252
} catch (e) {
5353
const error = _.get(

src/components/Users/index.js

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ class Users extends Component {
9292
async onAddUserConfirmClick () {
9393
console.log('in onAddUserConfirmClick')
9494
console.log('in onAddUserConfirmClick this.state.userToAdd', this.state.userToAdd)
95-
const { reloadProjectMembers } = this.props
95+
const { loadProject } = this.props
9696
if (this.state.isAdding) { return }
9797

9898
this.setState({
@@ -116,7 +116,7 @@ class Users extends Component {
116116
await addUserToProject(this.state.projectOption.value, this.state.userToAdd.userId, this.state.userPermissionToAdd)
117117
// wait for a second so that project's members are updated
118118
await wait(1000)
119-
if (this.state.projectOption.value) { reloadProjectMembers(this.state.projectOption.value) }
119+
if (this.state.projectOption.value) { loadProject(this.state.projectOption.value) }
120120
this.resetAddUserState()
121121
} catch (e) {
122122
const error = _.get(
@@ -167,13 +167,13 @@ class Users extends Component {
167167
async onRemoveConfirmClick () {
168168
if (this.state.isRemoving) { return }
169169

170-
const { reloadProjectMembers } = this.props
170+
const { loadProject } = this.props
171171
const userToRemove = this.state.userToRemove
172172
try {
173173
this.setState({ isRemoving: true })
174174
await removeUserFromProject(userToRemove.projectId, userToRemove.id)
175175
await wait(1000)
176-
if (this.state.projectOption.value) { reloadProjectMembers(this.state.projectOption.value) }
176+
if (this.state.projectOption.value) { loadProject(this.state.projectOption.value) }
177177

178178
this.resetRemoveUserState()
179179
} catch (e) {
@@ -196,7 +196,7 @@ class Users extends Component {
196196
}
197197

198198
render () {
199-
const { projects, projectMembers, reloadProjectMembers, isEditable } = this.props
199+
const { projects, projectMembers, loadProject, isEditable } = this.props
200200
const projectOptions = projects.map(p => {
201201
return {
202202
label: p.name,
@@ -402,7 +402,11 @@ class Users extends Component {
402402
_.map(projectMembers, (member) => {
403403
return (
404404
<li className={styles.userItem} key={`user-card-${member.id}`}>
405-
<UserCard user={member} onRemoveClick={this.onRemoveClick} reloadProjectMembers={reloadProjectMembers} isEditable={isEditable} />
405+
<UserCard
406+
user={member}
407+
onRemoveClick={this.onRemoveClick}
408+
reloadProjectMembers={() => loadProject(this.state.projectOption.value)}
409+
isEditable={isEditable} />
406410
</li>
407411
)
408412
})
@@ -419,7 +423,6 @@ class Users extends Component {
419423

420424
Users.propTypes = {
421425
loadProject: PropTypes.func.isRequired,
422-
reloadProjectMembers: PropTypes.func.isRequired,
423426
auth: PropTypes.object,
424427
isEditable: PropTypes.bool,
425428
projects: PropTypes.arrayOf(PropTypes.object),

src/containers/Users/index.js

Lines changed: 29 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,18 @@ import { connect } from 'react-redux'
33
import _ from 'lodash'
44
import PT from 'prop-types'
55
import UsersComponent from '../../components/Users'
6-
import { loadProject, reloadProjectMembers } from '../../actions/projects'
76
import { PROJECT_ROLES } from '../../config/constants'
7+
import { fetchProjectById } from '../../services/projects'
88

99
class Users extends Component {
1010
constructor (props) {
1111
super(props)
1212

1313
this.state = {
14-
loginUserRoleInProject: ''
14+
loginUserRoleInProject: '',
15+
projectMembers: null
1516
}
17+
this.loadProject = this.loadProject.bind(this)
1618
}
1719

1820
componentDidMount () {
@@ -27,9 +29,13 @@ class Users extends Component {
2729
}
2830

2931
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) {
3339
const loginUserProjectInfo = _.find(projectMembers, { userId: loggedInUser.userId })
3440
if (loginUserProjectInfo && this.state.loginUserRoleInProject !== loginUserProjectInfo.role) {
3541
this.setState({
@@ -39,52 +45,49 @@ class Users extends Component {
3945
}
4046
}
4147

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+
4259
render () {
4360
const {
4461
projects,
45-
loadProject,
46-
projectMembers,
47-
auth,
48-
reloadProjectMembers,
49-
projectDetail
62+
auth
5063
} = this.props
64+
const {
65+
projectMembers
66+
} = this.state
5167
return (
5268
<UsersComponent
53-
projectDetail={projectDetail}
5469
projects={projects}
55-
loadProject={loadProject}
70+
loadProject={this.loadProject}
5671
projectMembers={projectMembers}
5772
auth={auth}
58-
reloadProjectMembers={reloadProjectMembers}
5973
isEditable={this.isEditable()}
6074
/>
6175
)
6276
}
6377
}
6478

65-
const mapStateToProps = ({ sidebar, challenges, auth, projects }) => {
79+
const mapStateToProps = ({ sidebar, auth }) => {
6680
return {
6781
projects: sidebar.projects,
68-
projectMembers: _.get(challenges, 'metadata.members'),
69-
projectDetail: projects.projectDetail,
7082
auth,
7183
loggedInUser: auth.user
7284
}
7385
}
7486

75-
const mapDispatchToProps = {
76-
loadProject,
77-
reloadProjectMembers
78-
}
79-
8087
Users.propTypes = {
81-
loadProject: PT.func.isRequired,
82-
reloadProjectMembers: PT.func.isRequired,
8388
projects: PT.arrayOf(PT.object),
84-
projectMembers: PT.arrayOf(PT.object),
8589
auth: PT.object,
86-
projectDetail: PT.object,
8790
loggedInUser: PT.object
8891
}
8992

90-
export default connect(mapStateToProps, mapDispatchToProps)(Users)
93+
export default connect(mapStateToProps)(Users)

0 commit comments

Comments
 (0)