Skip to content

Commit d673228

Browse files
authored
Merge pull request #1647 from topcoder-platform/pm-1140
fix(PM-1140): show spinner when changing between projects
2 parents 0493017 + 3cf1900 commit d673228

File tree

2 files changed

+16
-6
lines changed

2 files changed

+16
-6
lines changed

src/components/Users/index.js

Lines changed: 7 additions & 2 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
@@ -160,7 +161,8 @@ class Users extends Component {
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)}>
@@ -305,6 +307,8 @@ class Users extends Component {
305307
)
306308
}
307309

310+
{isLoadingProject && <Loader />}
311+
308312
</div>
309313
)
310314
}
@@ -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/containers/Users/index.js

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@ 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)
2728
this.updateProjectNember = this.updateProjectNember.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,7 +93,8 @@ 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)
@@ -156,7 +159,8 @@ class Users extends Component {
156159
const {
157160
projectMembers,
158161
invitedMembers,
159-
isAdmin
162+
isAdmin,
163+
isLoadingProject
160164
} = this.state
161165
return (
162166
<UsersComponent
@@ -169,6 +173,7 @@ class Users extends Component {
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)