|
1 | 1 | import useUpdateUser, { |
2 | | - useDeleteUser |
| 2 | + useDeleteUser, |
| 3 | + useInviteUser |
3 | 4 | } from "@flanksource-ui/api/query-hooks/useUserAPI"; |
4 | 5 | import { RegisteredUser } from "@flanksource-ui/api/types/users"; |
5 | | -import UserForm, { |
6 | | - UserFormValue |
7 | | -} from "@flanksource-ui/components/Users/UserForm"; |
| 6 | +import UserForm from "@flanksource-ui/components/Users/UserForm"; |
8 | 7 | import { SearchLayout } from "@flanksource-ui/ui/Layout/SearchLayout"; |
9 | 8 | import { useQuery } from "@tanstack/react-query"; |
10 | | -import { useCallback, useRef, useState } from "react"; |
| 9 | +import { useRef, useState } from "react"; |
11 | 10 | import { ImUserPlus } from "react-icons/im"; |
12 | | -import { |
13 | | - getRegisteredUsers, |
14 | | - inviteUser, |
15 | | - updateUserRole |
16 | | -} from "../api/services/users"; |
| 11 | +import { getRegisteredUsers } from "../api/services/users"; |
17 | 12 | import { Modal } from "../components"; |
18 | 13 | import { AuthorizationAccessCheck } from "../components/Permissions/AuthorizationAccessCheck"; |
19 | 14 | import { toastError, toastSuccess } from "../components/Toast/toast"; |
@@ -41,32 +36,20 @@ export function UsersPage() { |
41 | 36 | select: (data) => { |
42 | 37 | return data.data || []; |
43 | 38 | }, |
44 | | - cacheTime: 0 |
| 39 | + cacheTime: 0, |
| 40 | + staleTime: 0 |
45 | 41 | }); |
46 | 42 |
|
47 | | - const inviteUserFunction = useCallback( |
48 | | - async (val: UserFormValue) => { |
49 | | - try { |
50 | | - await inviteUser({ |
51 | | - firstName: val.firstName, |
52 | | - lastName: val.lastName, |
53 | | - email: val.email |
54 | | - }); |
55 | | - const userId = users.find((item) => item.email === val.email)?.id; |
56 | | - if (userId) { |
57 | | - await updateUserRole(userId, [val.role]); |
58 | | - return; |
59 | | - } |
60 | | - const userName = `${val.firstName} ${val.lastName}`; |
61 | | - toastSuccess(`${userName} invited successfully`); |
62 | | - setIsOpen(false); |
63 | | - refetch(); |
64 | | - } catch (ex) { |
65 | | - toastError(ex as any); |
66 | | - } |
| 43 | + const { mutate: inviteUserFunction, isLoading: isInviting } = useInviteUser({ |
| 44 | + onSuccess: () => { |
| 45 | + refetch(); |
| 46 | + toastSuccess(`user invited successfully`); |
| 47 | + setIsOpen(false); |
67 | 48 | }, |
68 | | - [refetch, users] |
69 | | - ); |
| 49 | + onError: (error) => { |
| 50 | + toastError(error.message); |
| 51 | + } |
| 52 | + }); |
70 | 53 |
|
71 | 54 | const { mutate: deleteUserFunction, isLoading: isDeleting } = useDeleteUser({ |
72 | 55 | onSuccess: () => { |
@@ -159,6 +142,7 @@ export function UsersPage() { |
159 | 142 | className="flex flex-col bg-white p-4" |
160 | 143 | onSubmit={inviteUserFunction} |
161 | 144 | onClose={() => setIsOpen(false)} |
| 145 | + isSubmitting={isInviting} |
162 | 146 | /> |
163 | 147 | </Modal> |
164 | 148 |
|
|
0 commit comments