-
-
setUserPermissionToAdd(PROJECT_ROLES.WRITE)}
- />
-
+ {showSelectUserError && (
+
+
Please select a member.
+
+ )}
+
+
+
+
+
+
+
setUserPermissionToAdd(PROJECT_ROLES.READ)}
+ />
+
+
+
+
+
+
setUserPermissionToAdd(PROJECT_ROLES.WRITE)}
+ />
+
+
+
+
+
+
setUserPermissionToAdd(PROJECT_ROLES.MANAGER)}
+ />
+
+
+
+
+
+
setUserPermissionToAdd(PROJECT_ROLES.COPILOT)}
+ />
+
+
+
+ {addUserError && (
+
{addUserError}
+ )}
-
-
-
setUserPermissionToAdd(PROJECT_ROLES.MANAGER)}
+
-
- {addUserError && (
-
{addUserError}
- )}
-
-
-
+ )
+ }
)
}
@@ -188,7 +230,10 @@ UserAddModalContent.propTypes = {
projectId: PropTypes.number.isRequired,
addNewProjectMember: PropTypes.func.isRequired,
onMemberInvited: PropTypes.func.isRequired,
- onClose: PropTypes.func.isRequired
+ onClose: PropTypes.func.isRequired,
+ projectOption: PropTypes.any.isRequired,
+ projectMembers: PropTypes.array.isRequired,
+ updateProjectMember: PropTypes.func.isRequired
}
export default UserAddModalContent
diff --git a/src/config/constants.js b/src/config/constants.js
index 0b7de032..47e4d2ed 100644
--- a/src/config/constants.js
+++ b/src/config/constants.js
@@ -354,7 +354,7 @@ export const GROUPS_DROPDOWN_PER_PAGE = 1000000 // make sure we are getting all
/**
* The list of challenge types which can have multiple prizes
*/
-export const CHALLENGE_TYPES_WITH_MULTIPLE_PRIZES = ['Challenge']
+export const CHALLENGE_TYPES_WITH_MULTIPLE_PRIZES = ['Challenge', 'Marathon Match']
/**
* All the repeating messages.
diff --git a/src/containers/ProjectInvitations/index.js b/src/containers/ProjectInvitations/index.js
index 58e6f20d..fc9c4e49 100644
--- a/src/containers/ProjectInvitations/index.js
+++ b/src/containers/ProjectInvitations/index.js
@@ -46,16 +46,22 @@ const ProjectInvitations = ({ match, auth, isProjectLoading, history, projectDet
const updateInvite = useCallback(async (status, source) => {
setIsUpdating(status)
- await updateProjectMemberInvite(projectId, invitation.id, status, source)
-
- // await for the project details to propagate
- await delay(1000)
- await loadProjectInvites(projectId)
- toastr.success('Success', `Successfully ${status} the invitation.`)
-
- // await for the project details to fetch
- await delay(1000)
- history.push(status === PROJECT_MEMBER_INVITE_STATUS_ACCEPTED ? `/projects/${projectId}/challenges` : '/projects')
+ try {
+ await updateProjectMemberInvite(projectId, invitation.id, status, source)
+
+ // await for the project details to propagate
+ await delay(1000)
+ await loadProjectInvites(projectId)
+ toastr.success('Success', `Successfully ${status} the invitation.`)
+
+ // await for the project details to fetch
+ await delay(1000)
+ history.push(status === PROJECT_MEMBER_INVITE_STATUS_ACCEPTED ? `/projects/${projectId}/challenges` : '/projects')
+ } catch (e) {
+ toastr.error('Error', e.response.data.message)
+ await delay(1000)
+ history.push('/projects')
+ }
}, [projectId, invitation, loadProjectInvites, history])
const acceptInvite = useCallback(() => updateInvite(PROJECT_MEMBER_INVITE_STATUS_ACCEPTED, source), [updateInvite, source])
diff --git a/src/services/projects.js b/src/services/projects.js
index a3cf43c0..1a03221c 100644
--- a/src/services/projects.js
+++ b/src/services/projects.js
@@ -103,9 +103,10 @@ export async function fetchProjectPhases (id) {
* @param newRole the new role
* @returns {Promise<*>}
*/
-export async function updateProjectMemberRole (projectId, memberRecordId, newRole) {
+export async function updateProjectMemberRole (projectId, memberRecordId, newRole, action) {
const response = await axiosInstance.patch(`${PROJECTS_API_URL}/${projectId}/members/${memberRecordId}`, {
- role: newRole
+ role: newRole,
+ action
})
return _.get(response, 'data')
}