@@ -4,10 +4,10 @@ import { addProjectMember as addMember,
44 loadMemberSuggestions as loadMemberSuggestionsAPI
55} from '../../api/projectMembers'
66import { createProjectMemberInvite as createProjectMemberInvite ,
7- updateProjectMemberInvite as updateProjectMemberInvite
7+ updateProjectMemberInvite as updateProjectMemberInvite ,
8+ deleteProjectMemberInvite as deleteProjectMemberInvite ,
89} from '../../api/projectMemberInvites'
910import { loadProjectMember , loadProjectMembers , loadProjectMemberInvites } from './project'
10- import { loadMembersByHandle } from '../../actions/members'
1111
1212import { ADD_PROJECT_MEMBER , REMOVE_PROJECT_MEMBER , UPDATE_PROJECT_MEMBER ,
1313 LOAD_MEMBER_SUGGESTIONS ,
@@ -17,7 +17,6 @@ import {ADD_PROJECT_MEMBER, REMOVE_PROJECT_MEMBER, UPDATE_PROJECT_MEMBER,
1717 INVITE_CUSTOMER ,
1818 ACCEPT_OR_REFUSE_INVITE ,
1919 PROJECT_ROLE_CUSTOMER ,
20- PROJECT_MEMBER_INVITE_STATUS_CANCELED ,
2120 CLEAR_MEMBER_SUGGESTIONS ,
2221 ACCEPT_OR_REFUSE_INVITE_FAILURE ,
2322 ES_REINDEX_DELAY ,
@@ -95,20 +94,17 @@ function inviteMembersWithData(dispatch, projectId, emailIds, handles, role) {
9594 return new Promise ( ( resolve , reject ) => {
9695 // remove `@` from handles before making a request to the server as server may not support format with `@`
9796 const clearedHandles = handles ? handles . map ( handle => handle . replace ( / ^ @ / , '' ) ) : [ ]
98- return dispatch ( loadMembersByHandle ( clearedHandles ) )
99- . then ( ( { value } ) => {
100- const req = { }
101- if ( value && value . length > 0 ) {
102- req . userIds = value . map ( member => member . userId )
103- }
104- if ( emailIds && emailIds . length > 0 ) {
105- req . emails = emailIds
106- }
107- req . role = role
108- createProjectMemberInvite ( projectId , req )
109- . then ( ( res ) => resolve ( res ) )
110- . catch ( err => reject ( err ) )
111- } )
97+ const req = { }
98+ if ( clearedHandles && clearedHandles . length > 0 ) {
99+ req . handles = clearedHandles
100+ }
101+ if ( emailIds && emailIds . length > 0 ) {
102+ req . emails = emailIds
103+ }
104+ req . role = role
105+ createProjectMemberInvite ( projectId , req )
106+ . then ( ( res ) => resolve ( res ) )
107+ . catch ( err => reject ( err ) )
112108 } )
113109}
114110
@@ -121,26 +117,12 @@ export function inviteTopcoderMembers(projectId, items) {
121117 }
122118}
123119
124- function deleteTopcoderMemberInviteWithData ( projectId , invite ) {
125- return new Promise ( ( resolve , reject ) => {
126- const req = { }
127- if ( invite . item . userId ) {
128- req . userId = invite . item . userId
129- } else {
130- req . email = invite . item . email
131- }
132- req . status = PROJECT_MEMBER_INVITE_STATUS_CANCELED
133- updateProjectMemberInvite ( projectId , req )
134- . then ( ( res ) => resolve ( res ) )
135- . catch ( err => reject ( err ) )
136- } )
137- }
138-
139120export function deleteTopcoderMemberInvite ( projectId , invite ) {
140121 return ( dispatch ) => {
141122 dispatch ( {
142123 type : REMOVE_TOPCODER_MEMBER_INVITE ,
143- payload : deleteTopcoderMemberInviteWithData ( projectId , invite )
124+ payload : deleteProjectMemberInvite ( projectId , invite . item . id ) ,
125+ meta : { inviteId : invite . item . id }
144126 } )
145127 }
146128}
@@ -149,7 +131,8 @@ export function deleteProjectInvite(projectId, invite) {
149131 return ( dispatch ) => {
150132 dispatch ( {
151133 type : REMOVE_CUSTOMER_INVITE ,
152- payload : deleteTopcoderMemberInviteWithData ( projectId , invite )
134+ payload : deleteProjectMemberInvite ( projectId , invite . item . id ) ,
135+ meta : { inviteId : invite . item . id }
153136 } )
154137 }
155138}
@@ -170,10 +153,12 @@ export function inviteProjectMembers(projectId, emailIds, handles) {
170153 * @param {Object } currentUser current user info
171154 */
172155export function acceptOrRefuseInvite ( projectId , item , currentUser ) {
173- return ( dispatch ) => {
156+ return ( dispatch , getState ) => {
157+ const projectState = getState ( ) . projectState
158+ const inviteId = item . id ? item . id : projectState . userInvitationId
174159 return dispatch ( {
175160 type : ACCEPT_OR_REFUSE_INVITE ,
176- payload : updateProjectMemberInvite ( projectId , item ) . then ( ( response ) =>
161+ payload : updateProjectMemberInvite ( projectId , inviteId , item . status ) . then ( ( response ) =>
177162 // we have to add delay before applying the result of accepting/declining invitation
178163 // as it takes some time for the update to be reindexed in ES so the new state is reflected
179164 // everywhere
0 commit comments