Skip to content

Commit 34e8439

Browse files
committed
update project members when invite is approved
1 parent ddb78dd commit 34e8439

File tree

5 files changed

+31
-12
lines changed

5 files changed

+31
-12
lines changed

src/api/projects.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ export function getProjectById(projectId) {
5656
_.forEach(res.attachments, a => {
5757
a.downloadUrl = `/projects/${projectId}/attachments/${a.id}`
5858
})
59+
if (!res.invites) res.invites = []
5960
return res
6061
})
6162
}

src/config/constants.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -346,6 +346,11 @@ export const ACCEPT_OR_REFUSE_INVITE_PENDING = 'ACCEPT_OR_REFUSE_INVITE_PENDING'
346346
export const ACCEPT_OR_REFUSE_INVITE_FAILURE = 'ACCEPT_OR_REFUSE_INVITE_FAILURE'
347347
export const ACCEPT_OR_REFUSE_INVITE_SUCCESS = 'ACCEPT_OR_REFUSE_INVITE_SUCCESS'
348348

349+
export const RELOAD_PROJECT_MEMBERS = 'RELOAD_PROJECT_MEMBERS'
350+
export const RELOAD_PROJECT_MEMBERS_PENDING = 'RELOAD_PROJECT_MEMBERS_PENDING'
351+
export const RELOAD_PROJECT_MEMBERS_FAILURE = 'RELOAD_PROJECT_MEMBERS_FAILURE'
352+
export const RELOAD_PROJECT_MEMBERS_SUCCESS = 'RELOAD_PROJECT_MEMBERS_SUCCESS'
353+
349354
export const ADD_PROJECT_MEMBERS = 'ADD_PROJECT_MEMBERS'
350355
export const ADD_PROJECT_MEMBERS_PENDING = 'ADD_PROJECT_MEMBERS_PENDING'
351356
export const ADD_PROJECT_MEMBERS_SUCCESS = 'ADD_PROJECT_MEMBERS_SUCCESS'

src/projects/actions/projectMember.js

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import { addProjectMember as addMember,
66
import { createProjectMemberInvite as createProjectMemberInvite,
77
updateProjectMemberInvite as updateProjectMemberInvite
88
} from '../../api/projectMemberInvites'
9+
import { getProjectById } from '../../api/projects'
910
import { loadMembers, loadMembersByHandle } from '../../actions/members'
1011

1112
import {ADD_PROJECT_MEMBER, REMOVE_PROJECT_MEMBER, UPDATE_PROJECT_MEMBER,
@@ -16,7 +17,8 @@ import {ADD_PROJECT_MEMBER, REMOVE_PROJECT_MEMBER, UPDATE_PROJECT_MEMBER,
1617
INVITE_CUSTOMER,
1718
ACCEPT_OR_REFUSE_INVITE,
1819
PROJECT_ROLE_CUSTOMER,
19-
PROJECT_MEMBER_INVITE_STATUS_CANCELED
20+
PROJECT_MEMBER_INVITE_STATUS_CANCELED,
21+
RELOAD_PROJECT_MEMBERS
2022
} from '../../config/constants'
2123

2224

@@ -140,19 +142,20 @@ export function inviteProjectMembers(projectId, emailIds, handles) {
140142
}
141143
}
142144

143-
144-
function acceptOrRefuseInviteWithData(dispatch, projectId, item) {
145-
return new Promise((resolve, reject) => {
146-
return updateProjectMemberInvite(projectId, item)
147-
.catch(err => reject(err))
148-
})
149-
}
150-
151145
export function acceptOrRefuseInvite(projectId, item) {
152146
return (dispatch) => {
153147
return dispatch({
154148
type: ACCEPT_OR_REFUSE_INVITE,
155-
payload: acceptOrRefuseInviteWithData(dispatch, projectId, item)
149+
payload: updateProjectMemberInvite(projectId, item)
150+
})
151+
}
152+
}
153+
154+
export function reloadProjectMembers(projectId) {
155+
return (dispatch) => {
156+
return dispatch({
157+
type: RELOAD_PROJECT_MEMBERS,
158+
payload: getProjectById(projectId)
156159
})
157160
}
158161
}

src/projects/detail/containers/TeamManagementContainer.jsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import {
1818
import TeamManagement from '../../../components/TeamManagement/TeamManagement'
1919
import {
2020
acceptOrRefuseInvite,
21+
reloadProjectMembers,
2122
addProjectMember,
2223
deleteProjectInvite,
2324
deleteTopcoderMemberInvite,
@@ -103,6 +104,7 @@ class TeamManagementContainer extends Component {
103104

104105
onAcceptOrRefuse(invite) {
105106
this.props.acceptOrRefuseInvite(this.props.projectId, invite)
107+
.then(() => this.props.reloadProjectMembers(this.props.projectId))
106108
}
107109

108110
changeRole(memberId, item) {
@@ -243,6 +245,7 @@ const mapDispatchToProps = {
243245
inviteTopcoderMembers,
244246
deleteTopcoderMemberInvite,
245247
acceptOrRefuseInvite,
248+
reloadProjectMembers,
246249
}
247250

248251
TeamManagementContainer.propTypes = {

src/projects/reducers/project.js

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import {
1919
INVITE_TOPCODER_MEMBER_SUCCESS, REMOVE_TOPCODER_MEMBER_INVITE_SUCCESS, INVITE_TOPCODER_MEMBER_PENDING, REMOVE_CUSTOMER_INVITE_PENDING,
2020
REMOVE_TOPCODER_MEMBER_INVITE_PENDING, REMOVE_TOPCODER_MEMBER_INVITE_FAILURE, REMOVE_CUSTOMER_INVITE_FAILURE,
2121
INVITE_CUSTOMER_FAILURE, INVITE_TOPCODER_MEMBER_FAILURE, INVITE_CUSTOMER_PENDING,
22-
ACCEPT_OR_REFUSE_INVITE_SUCCESS, ACCEPT_OR_REFUSE_INVITE_FAILURE, ACCEPT_OR_REFUSE_INVITE_PENDING,
22+
ACCEPT_OR_REFUSE_INVITE_SUCCESS, ACCEPT_OR_REFUSE_INVITE_FAILURE, ACCEPT_OR_REFUSE_INVITE_PENDING, RELOAD_PROJECT_MEMBERS_SUCCESS,
2323
UPLOAD_PROJECT_ATTACHMENT_FILES, DISCARD_PROJECT_ATTACHMENT, CHANGE_ATTACHMENT_PERMISSION
2424
} from '../../config/constants'
2525
import _ from 'lodash'
@@ -182,7 +182,14 @@ export const projectState = function (state=initialState, action) {
182182

183183
case ACCEPT_OR_REFUSE_INVITE_SUCCESS: {
184184
return Object.assign({}, state, {
185-
showUserInvited: false
185+
showUserInvited: false,
186+
project: action.payload
187+
})
188+
}
189+
190+
case RELOAD_PROJECT_MEMBERS_SUCCESS: {
191+
return Object.assign({}, state, {
192+
project: action.payload
186193
})
187194
}
188195

0 commit comments

Comments
 (0)