@@ -6,15 +6,15 @@ import Modal from '../Modal'
66import SelectUserAutocomplete from '../SelectUserAutocomplete'
77import { PROJECT_ROLES } from '../../config/constants'
88import PrimaryButton from '../Buttons/PrimaryButton'
9- import { addUserToProject } from '../../services/projects'
9+ import { addUserToProject , inviteUserToProject } from '../../services/projects'
1010
1111import styles from './Users.module.scss'
1212
1313const theme = {
1414 container : styles . modalContainer
1515}
1616
17- const UserAddModalContent = ( { projectId, addNewProjectMember, onClose } ) => {
17+ const UserAddModalContent = ( { projectId, addNewProjectMember, onMemberInvited , onClose } ) => {
1818 const [ userToAdd , setUserToAdd ] = useState ( null )
1919 const [ userPermissionToAdd , setUserPermissionToAdd ] = useState ( PROJECT_ROLES . READ )
2020 const [ showSelectUserError , setShowSelectUserError ] = useState ( false )
@@ -45,10 +45,28 @@ const UserAddModalContent = ({ projectId, addNewProjectMember, onClose }) => {
4545 setAddUserError ( null )
4646
4747 try {
48- const newUserInfo = await addUserToProject ( projectId , userToAdd . userId , userPermissionToAdd )
49- newUserInfo . handle = userToAdd . handle
50- addNewProjectMember ( newUserInfo )
51- onClose ( )
48+ if ( userPermissionToAdd === PROJECT_ROLES . COPILOT ) {
49+ const { success : invitations = [ ] , failed, ...rest } = await inviteUserToProject ( projectId , {
50+ handles : [ userToAdd . handle ] ,
51+ role : userPermissionToAdd
52+ } )
53+ if ( failed ) {
54+ const error = get ( failed , '0.message' , 'User cannot be invited' )
55+ setAddUserError ( error )
56+ setIsAdding ( false )
57+ } else if ( rest . message ) {
58+ setAddUserError ( rest . message )
59+ setIsAdding ( false )
60+ } else {
61+ onMemberInvited ( invitations [ 0 ] || { } )
62+ onClose ( )
63+ }
64+ } else {
65+ const newUserInfo = await addUserToProject ( projectId , userToAdd . userId , userPermissionToAdd )
66+ newUserInfo . handle = userToAdd . handle
67+ addNewProjectMember ( newUserInfo )
68+ onClose ( )
69+ }
5270 } catch ( e ) {
5371 const error = get ( e , 'response.data.message' , 'Unable to add user' )
5472 setAddUserError ( error )
@@ -169,6 +187,7 @@ const UserAddModalContent = ({ projectId, addNewProjectMember, onClose }) => {
169187UserAddModalContent . propTypes = {
170188 projectId : PropTypes . number . isRequired ,
171189 addNewProjectMember : PropTypes . func . isRequired ,
190+ onMemberInvited : PropTypes . func . isRequired ,
172191 onClose : PropTypes . func . isRequired
173192}
174193
0 commit comments