import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query'; import * as usuariosApi from '../api/usuarios'; import type { UserInvite, UserUpdate } from '@horux/shared'; export function useUsuarios() { return useQuery({ queryKey: ['usuarios'], queryFn: usuariosApi.getUsuarios, }); } export function useInviteUsuario() { const queryClient = useQueryClient(); return useMutation({ mutationFn: (data: UserInvite) => usuariosApi.inviteUsuario(data), onSuccess: () => { queryClient.invalidateQueries({ queryKey: ['usuarios'] }); }, }); } export function useUpdateUsuario() { const queryClient = useQueryClient(); return useMutation({ mutationFn: ({ id, data }: { id: string; data: UserUpdate }) => usuariosApi.updateUsuario(id, data), onSuccess: () => { queryClient.invalidateQueries({ queryKey: ['usuarios'] }); }, }); } export function useDeleteUsuario() { const queryClient = useQueryClient(); return useMutation({ mutationFn: (id: string) => usuariosApi.deleteUsuario(id), onSuccess: () => { queryClient.invalidateQueries({ queryKey: ['usuarios'] }); }, }); } // Hooks globales (admin global) export function useAllUsuarios() { return useQuery({ queryKey: ['usuarios', 'global'], queryFn: usuariosApi.getAllUsuarios, }); } export function useUpdateUsuarioGlobal() { const queryClient = useQueryClient(); return useMutation({ mutationFn: ({ id, data }: { id: string; data: UserUpdate }) => usuariosApi.updateUsuarioGlobal(id, data), onSuccess: () => { queryClient.invalidateQueries({ queryKey: ['usuarios'] }); }, }); } export function useDeleteUsuarioGlobal() { const queryClient = useQueryClient(); return useMutation({ mutationFn: (id: string) => usuariosApi.deleteUsuarioGlobal(id), onSuccess: () => { queryClient.invalidateQueries({ queryKey: ['usuarios'] }); }, }); }