Skip to content

Commit ed41222

Browse files
authored
Merge pull request #1648 from topcoder-platform/develop
[PROD RELEASE] - Bug fixes
2 parents 64cfc53 + 1fc4c52 commit ed41222

File tree

4 files changed

+33
-22
lines changed

4 files changed

+33
-22
lines changed

src/components/UserCard/index.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,11 @@ class UserCard extends Component {
4242
isUpdatingPermission: true
4343
})
4444

45-
const { user, updateProjectNember } = this.props
45+
const { user, updateProjectMember } = this.props
4646

4747
try {
4848
const newUserInfoRole = await updateProjectMemberRole(user.projectId, user.id, newRole)
49-
updateProjectNember(newUserInfoRole)
49+
updateProjectMember(newUserInfoRole)
5050
this.setState({ showSuccessModal: true })
5151
} catch (e) {
5252
const error = _.get(
@@ -190,7 +190,7 @@ class UserCard extends Component {
190190
UserCard.propTypes = {
191191
isInvite: PropTypes.bool,
192192
user: PropTypes.object,
193-
updateProjectNember: PropTypes.func.isRequired,
193+
updateProjectMember: PropTypes.func.isRequired,
194194
onRemoveClick: PropTypes.func.isRequired,
195195
isEditable: PropTypes.bool
196196
}

src/components/Users/index.js

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import { deleteProjectMemberInvite } from '../../services/projectMemberInvites'
1313
import ConfirmationModal from '../Modal/ConfirmationModal'
1414
import UserAddModalContent from './user-add.modal'
1515
import InviteUserModalContent from './invite-user.modal' // Import the new component
16+
import Loader from '../Loader'
1617

1718
const theme = {
1819
container: styles.modalContainer
@@ -109,15 +110,15 @@ class Users extends Component {
109110
async onRemoveConfirmClick () {
110111
if (this.state.isRemoving) { return }
111112

112-
const { removeProjectNember, invitedMembers } = this.props
113+
const { removeProjectMember, invitedMembers } = this.props
113114
const userToRemove = this.state.userToRemove
114115
const isInvite = !!_.find(invitedMembers, { email: userToRemove.email })
115116
try {
116117
this.setState({ isRemoving: true })
117118
await (
118119
isInvite ? deleteProjectMemberInvite(userToRemove.projectId, userToRemove.id) : removeUserFromProject(userToRemove.projectId, userToRemove.id)
119120
)
120-
removeProjectNember(userToRemove)
121+
removeProjectMember(userToRemove)
121122

122123
this.resetRemoveUserState()
123124
} catch (e) {
@@ -156,11 +157,12 @@ class Users extends Component {
156157
projects,
157158
projectMembers,
158159
invitedMembers,
159-
updateProjectNember,
160+
updateProjectMember,
160161
isEditable,
161162
isSearchingUserProjects,
162163
resultSearchUserProjects,
163-
loadNextProjects
164+
loadNextProjects,
165+
isLoadingProject
164166
} = this.props
165167
const {
166168
searchKey
@@ -251,7 +253,7 @@ class Users extends Component {
251253
)
252254
}
253255
{
254-
membersExist && (
256+
!isLoadingProject && membersExist && (
255257
<>
256258
<div className={styles.header}>
257259
<div className={cn(styles.col5)}>
@@ -278,7 +280,7 @@ class Users extends Component {
278280
<UserCard
279281
user={member}
280282
onRemoveClick={this.onRemoveClick}
281-
updateProjectNember={updateProjectNember}
283+
updateProjectMember={updateProjectMember}
282284
isEditable={isEditable} />
283285
</li>
284286
)
@@ -294,7 +296,7 @@ class Users extends Component {
294296
isInvite
295297
user={member}
296298
onRemoveClick={this.onRemoveClick}
297-
updateProjectNember={updateProjectNember}
299+
updateProjectMember={updateProjectMember}
298300
isEditable={isEditable} />
299301
</li>
300302
)
@@ -305,15 +307,17 @@ class Users extends Component {
305307
)
306308
}
307309

310+
{isLoadingProject && <Loader />}
311+
308312
</div>
309313
)
310314
}
311315
}
312316

313317
Users.propTypes = {
314318
loadProject: PropTypes.func.isRequired,
315-
updateProjectNember: PropTypes.func.isRequired,
316-
removeProjectNember: PropTypes.func.isRequired,
319+
updateProjectMember: PropTypes.func.isRequired,
320+
removeProjectMember: PropTypes.func.isRequired,
317321
addNewProjectInvite: PropTypes.func.isRequired,
318322
addNewProjectMember: PropTypes.func.isRequired,
319323
auth: PropTypes.object,
@@ -322,6 +326,7 @@ Users.propTypes = {
322326
projects: PropTypes.arrayOf(PropTypes.object),
323327
projectMembers: PropTypes.arrayOf(PropTypes.object),
324328
invitedMembers: PropTypes.arrayOf(PropTypes.object),
329+
isLoadingProject: PropTypes.bool.isRequired,
325330
searchUserProjects: PropTypes.func.isRequired,
326331
resultSearchUserProjects: PropTypes.arrayOf(PropTypes.object),
327332
loadNextProjects: PropTypes.func.isRequired

src/config/constants.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -437,6 +437,7 @@ export const SPECIAL_CHALLENGE_TAGS = [
437437
* Possible statuses of projects
438438
*/
439439
export const PROJECT_STATUSES = [
440+
{ label: 'Draft', value: 'draft' },
440441
{ label: 'Active', value: 'active' },
441442
{ label: 'In Review', value: 'in_review' },
442443
{ label: 'Reviewed', value: 'reviewed' },

src/containers/Users/index.js

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,12 @@ class Users extends Component {
2121
loginUserRoleInProject: '',
2222
projectMembers: null,
2323
invitedMembers: null,
24-
isAdmin: false
24+
isAdmin: false,
25+
isLoadingProject: false
2526
}
2627
this.loadProject = this.loadProject.bind(this)
27-
this.updateProjectNember = this.updateProjectNember.bind(this)
28-
this.removeProjectNember = this.removeProjectNember.bind(this)
28+
this.updateProjectMember = this.updateProjectMember.bind(this)
29+
this.removeProjectMember = this.removeProjectMember.bind(this)
2930
this.addNewProjectInvite = this.addNewProjectInvite.bind(this)
3031
this.addNewProjectMember = this.addNewProjectMember.bind(this)
3132
this.loadNextProjects = this.loadNextProjects.bind(this)
@@ -80,9 +81,10 @@ class Users extends Component {
8081
}
8182

8283
loadProject (projectId) {
84+
this.setState({ isLoadingProject: true })
8385
fetchProjectById(projectId).then(async (project) => {
8486
const projectMembers = _.get(project, 'members')
85-
const invitedMembers = _.get(project, 'invites')
87+
const invitedMembers = _.get(project, 'invites') || []
8688
const invitedUserIds = _.filter(_.map(invitedMembers, 'userId'))
8789
const invitedUsers = await fetchInviteMembers(invitedUserIds)
8890

@@ -91,14 +93,15 @@ class Users extends Component {
9193
invitedMembers: invitedMembers.map(m => ({
9294
...m,
9395
email: m.email || invitedUsers[m.userId].handle
94-
}))
96+
})),
97+
isLoadingProject: false
9598
})
9699
const { loggedInUser } = this.props
97100
this.updateLoginUserRoleInProject(projectMembers, loggedInUser)
98101
})
99102
}
100103

101-
updateProjectNember (newMemberInfo) {
104+
updateProjectMember (newMemberInfo) {
102105
const { projectMembers } = this.state
103106
const newProjectMembers = projectMembers.map(pm => pm.id === newMemberInfo.id ? ({
104107
...pm,
@@ -111,7 +114,7 @@ class Users extends Component {
111114
this.updateLoginUserRoleInProject(newProjectMembers, loggedInUser)
112115
}
113116

114-
removeProjectNember (projectMember) {
117+
removeProjectMember (projectMember) {
115118
const { projectMembers, invitedMembers } = this.state
116119
const newProjectMembers = _.filter(projectMembers, pm => pm.id !== projectMember.id)
117120
const newInvitedMembers = _.filter(invitedMembers, pm => pm.id !== projectMember.id)
@@ -156,19 +159,21 @@ class Users extends Component {
156159
const {
157160
projectMembers,
158161
invitedMembers,
159-
isAdmin
162+
isAdmin,
163+
isLoadingProject
160164
} = this.state
161165
return (
162166
<UsersComponent
163167
projects={projects}
164168
loadProject={this.loadProject}
165-
updateProjectNember={this.updateProjectNember}
166-
removeProjectNember={this.removeProjectNember}
169+
updateProjectMember={this.updateProjectMember}
170+
removeProjectMember={this.removeProjectMember}
167171
addNewProjectMember={this.addNewProjectMember}
168172
addNewProjectInvite={this.addNewProjectInvite}
169173
loadNextProjects={this.loadNextProjects}
170174
projectMembers={projectMembers}
171175
invitedMembers={invitedMembers}
176+
isLoadingProject={isLoadingProject}
172177
auth={auth}
173178
isAdmin={isAdmin}
174179
isEditable={this.isEditable()}

0 commit comments

Comments
 (0)