✨(app-desk) add useUsers react-query hook
Add the hook useUsers, it will be used to search users by name or email.
This commit is contained in:
3
src/frontend/apps/desk/src/features/members/api/index.ts
Normal file
3
src/frontend/apps/desk/src/features/members/api/index.ts
Normal file
@@ -0,0 +1,3 @@
|
||||
export * from './useTeamsAccesses';
|
||||
export * from './useUpdateTeamAccess';
|
||||
export * from './useUsers';
|
||||
36
src/frontend/apps/desk/src/features/members/api/useUsers.tsx
Normal file
36
src/frontend/apps/desk/src/features/members/api/useUsers.tsx
Normal file
@@ -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<User>;
|
||||
|
||||
export const getUsers = async ({
|
||||
query,
|
||||
}: UsersParams): Promise<UsersResponse> => {
|
||||
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<UsersResponse>;
|
||||
};
|
||||
|
||||
export const KEY_LIST_USER = 'users';
|
||||
|
||||
export function useUsers(
|
||||
param: UsersParams,
|
||||
queryConfig?: UseQueryOptions<UsersResponse, APIError, UsersResponse>,
|
||||
) {
|
||||
return useQuery<UsersResponse, APIError, UsersResponse>({
|
||||
queryKey: [KEY_LIST_USER, param],
|
||||
queryFn: () => getUsers(param),
|
||||
...queryConfig,
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user