@@ -68,6 +68,7 @@ interface UserInviteModalProps {
6868 } ;
6969 isAssignUserRolesAllowed : boolean ;
7070 useLazyGetTeamsQuery : any ;
71+ useGetUserByEmailQuery : any ;
7172}
7273
7374export default function UserInviteModal ( {
@@ -81,7 +82,8 @@ export default function UserInviteModal({
8182 useHandleUserInviteMutation,
8283 useNotificationHandlers,
8384 isAssignUserRolesAllowed,
84- useLazyGetTeamsQuery
85+ useLazyGetTeamsQuery,
86+ useGetUserByEmailQuery
8587} : UserInviteModalProps ) {
8688 const [ inviteeFirstName , setInviteeFirstName ] = useState < string > ( '' ) ;
8789 const [ inviteeLastName , setInviteeLastName ] = useState < string > ( '' ) ;
@@ -101,6 +103,13 @@ export default function UserInviteModal({
101103 const orgs = data ?. organizations ;
102104 const defaultOrgSelection = { id : 'none' , name : 'None' } ;
103105 const [ organization , setOrganization ] = useState < Organization > ( defaultOrgSelection ) ;
106+
107+ // Query to check if user exists by email
108+ const { data : existingUserData } = useGetUserByEmailQuery (
109+ { email : inviteeEmail } ,
110+ { skip : ! inviteeEmail || ! EMAIL_REGEXP . test ( inviteeEmail ) }
111+ ) ;
112+
104113 const { data : providerRolesData } = useGetUserOrgRolesQuery ( {
105114 orgId : currentOrgId ,
106115 all : true ,
@@ -180,6 +189,16 @@ export default function UserInviteModal({
180189 setErrorMessages ( ( state ) => ( { ...state , inviteeEmail : 'Email is invalid' } ) ) ;
181190 isSuccess = false ;
182191 }
192+
193+ // Check if user with this email already exists using GetUserByEmail
194+ if ( isSuccess && existingUserData ) {
195+ setErrorMessages ( ( state ) => ( {
196+ ...state ,
197+ inviteeEmail : 'A user with this email already exists'
198+ } ) ) ;
199+ isSuccess = false ;
200+ }
201+
183202 if ( isSuccess ) handleInvite ( ) ;
184203 } ;
185204
0 commit comments