import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query'; import { usersApi } from '../api/usersApi'; import { UserListParams } from '../types/api'; import { message } from 'antd'; import { normalizeData } from '../utils/normalize'; export const useUsers = (params: UserListParams) => { return useQuery({ queryKey: ['users', params], queryFn: async () => { const res = await usersApi.getUsers(params); return { data: normalizeData(res.data), total: res.total }; }, }); }; export const useUser = (id: string) => { return useQuery({ queryKey: ['users', id], queryFn: () => usersApi.getUser(id), enabled: !!id && id !== '-', }); }; export const useUpdateUser = () => { const queryClient = useQueryClient(); return useMutation({ mutationFn: ({ id, data }: { id: string; data: Partial }) => usersApi.updateUser(id, data), onSuccess: () => { queryClient.invalidateQueries({ queryKey: ['users'] }); message.success('Пользователь обновлен'); }, onError: () => message.error('Ошибка обновления'), }); }; export const useDeleteUser = () => { const queryClient = useQueryClient(); return useMutation({ mutationFn: (id: string) => usersApi.deleteUser(id), onSuccess: () => { queryClient.invalidateQueries({ queryKey: ['users'] }); message.success('Пользователь удален'); }, onError: () => message.error('Ошибка удаления'), }); };