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, + }); +}