From e9848bd199707cc438c45b36b6775ed3d0c1db0b Mon Sep 17 00:00:00 2001 From: Anthony LC Date: Thu, 14 Mar 2024 15:47:56 +0100 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8(app-desk)=20add=20useUsers=20react-qu?= =?UTF-8?q?ery=20hook?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add the hook useUsers, it will be used to search users by name or email. --- .../desk/src/features/members/api/index.ts | 3 ++ .../src/features/members/api/useUsers.tsx | 36 +++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 src/frontend/apps/desk/src/features/members/api/index.ts create mode 100644 src/frontend/apps/desk/src/features/members/api/useUsers.tsx diff --git a/src/frontend/apps/desk/src/features/members/api/index.ts b/src/frontend/apps/desk/src/features/members/api/index.ts new file mode 100644 index 0000000..fef12de --- /dev/null +++ b/src/frontend/apps/desk/src/features/members/api/index.ts @@ -0,0 +1,3 @@ +export * from './useTeamsAccesses'; +export * from './useUpdateTeamAccess'; +export * from './useUsers'; diff --git a/src/frontend/apps/desk/src/features/members/api/useUsers.tsx b/src/frontend/apps/desk/src/features/members/api/useUsers.tsx new file mode 100644 index 0000000..918b8b5 --- /dev/null +++ b/src/frontend/apps/desk/src/features/members/api/useUsers.tsx @@ -0,0 +1,36 @@ +import { UseQueryOptions, useQuery } from '@tanstack/react-query'; + +import { APIError, APIList, errorCauses, fetchAPI } from '@/api'; +import { User } from '@/features/auth'; + +export type UsersParams = { + query: string; +}; + +type UsersResponse = APIList; + +export const getUsers = async ({ + query, +}: UsersParams): Promise => { + const queryParam = query ? `q=${query}` : ''; + const response = await fetchAPI(`users/?${queryParam}`); + + if (!response.ok) { + throw new APIError('Failed to get the users', await errorCauses(response)); + } + + return response.json() as Promise; +}; + +export const KEY_LIST_USER = 'users'; + +export function useUsers( + param: UsersParams, + queryConfig?: UseQueryOptions, +) { + return useQuery({ + queryKey: [KEY_LIST_USER, param], + queryFn: () => getUsers(param), + ...queryConfig, + }); +}