Skip to content

Commit 64db7bc

Browse files
authored
Merge pull request #1177 from layer5io/leecalcote/user-invite-check
Add useGetUserByEmailQuery to GetStartedModal and InviteUserModal components
2 parents e0eecd5 + 0fe06e0 commit 64db7bc

File tree

2 files changed

+24
-2
lines changed

2 files changed

+24
-2
lines changed

src/custom/DashboardWidgets/GettingStartedWidget/GetStartedModal.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ interface GetStartedModalProps {
7575
useLazyGetTeamsQuery: any;
7676
embedDesignPath: string;
7777
isFromMeshery: boolean;
78+
useGetUserByEmailQuery: any;
7879
}
7980

8081
const Loading: React.FC<LoadingProps> = ({ showModal, handleClose, style }) => {
@@ -164,7 +165,8 @@ const GetStartedModal: React.FC<GetStartedModalProps> = ({
164165
isAssignUserRolesAllowed,
165166
useLazyGetTeamsQuery,
166167
embedDesignPath,
167-
isFromMeshery
168+
isFromMeshery,
169+
useGetUserByEmailQuery
168170
}) => {
169171
const [openModal, setOpenModal] = useState<boolean>(false);
170172
const [clicked, setClicked] = useState<number | undefined>(undefined);
@@ -309,6 +311,7 @@ const GetStartedModal: React.FC<GetStartedModalProps> = ({
309311
useNotificationHandlers={useNotificationHandlers}
310312
isAssignUserRolesAllowed={isAssignUserRolesAllowed}
311313
useLazyGetTeamsQuery={useLazyGetTeamsQuery}
314+
useGetUserByEmailQuery={useGetUserByEmailQuery}
312315
/>
313316
)}
314317
</>

src/custom/DashboardWidgets/GettingStartedWidget/InviteUserModal.tsx

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ interface UserInviteModalProps {
6868
};
6969
isAssignUserRolesAllowed: boolean;
7070
useLazyGetTeamsQuery: any;
71+
useGetUserByEmailQuery: any;
7172
}
7273

7374
export 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

Comments
 (0)