@@ -6,15 +6,15 @@ import Modal from '../Modal'
6
6
import SelectUserAutocomplete from '../SelectUserAutocomplete'
7
7
import { PROJECT_ROLES } from '../../config/constants'
8
8
import PrimaryButton from '../Buttons/PrimaryButton'
9
- import { addUserToProject } from '../../services/projects'
9
+ import { addUserToProject , inviteUserToProject } from '../../services/projects'
10
10
11
11
import styles from './Users.module.scss'
12
12
13
13
const theme = {
14
14
container : styles . modalContainer
15
15
}
16
16
17
- const UserAddModalContent = ( { projectId, addNewProjectMember, onClose } ) => {
17
+ const UserAddModalContent = ( { projectId, addNewProjectMember, onMemberInvited , onClose } ) => {
18
18
const [ userToAdd , setUserToAdd ] = useState ( null )
19
19
const [ userPermissionToAdd , setUserPermissionToAdd ] = useState ( PROJECT_ROLES . READ )
20
20
const [ showSelectUserError , setShowSelectUserError ] = useState ( false )
@@ -45,10 +45,25 @@ const UserAddModalContent = ({ projectId, addNewProjectMember, onClose }) => {
45
45
setAddUserError ( null )
46
46
47
47
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 } = await inviteUserToProject ( projectId , {
50
+ handles : [ userToAdd . handle ] ,
51
+ role : userPermissionToAdd
52
+ } )
53
+ if ( failed ) {
54
+ const error = get ( failed , '0.message' , 'Unable to invite user' )
55
+ setAddUserError ( error )
56
+ setIsAdding ( false )
57
+ } else {
58
+ onMemberInvited ( invitations [ 0 ] || { } )
59
+ onClose ( )
60
+ }
61
+ } else {
62
+ const newUserInfo = await addUserToProject ( projectId , userToAdd . userId , userPermissionToAdd )
63
+ newUserInfo . handle = userToAdd . handle
64
+ addNewProjectMember ( newUserInfo )
65
+ onClose ( )
66
+ }
52
67
} catch ( e ) {
53
68
const error = get ( e , 'response.data.message' , 'Unable to add user' )
54
69
setAddUserError ( error )
@@ -169,6 +184,7 @@ const UserAddModalContent = ({ projectId, addNewProjectMember, onClose }) => {
169
184
UserAddModalContent . propTypes = {
170
185
projectId : PropTypes . number . isRequired ,
171
186
addNewProjectMember : PropTypes . func . isRequired ,
187
+ onMemberInvited : PropTypes . func . isRequired ,
172
188
onClose : PropTypes . func . isRequired
173
189
}
174
190
0 commit comments