Files
HoruxDespachos/apps/web/lib/hooks/use-documentos.ts
2026-04-27 22:09:36 -06:00

42 lines
1.5 KiB
TypeScript

import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';
import { getOpiniones, descargarOpinionPdf, consultarOpinion } from '../api/documentos';
import { useTenantViewStore } from '../../stores/tenant-view-store';
import { useContribuyenteStore } from '@/stores/contribuyente-store';
export function useOpiniones() {
const viewingTenantId = useTenantViewStore((s) => s.viewingTenantId);
const { selectedContribuyenteId } = useContribuyenteStore();
return useQuery({
queryKey: ['opiniones', viewingTenantId, selectedContribuyenteId],
queryFn: () => getOpiniones(selectedContribuyenteId || undefined),
});
}
export function useConsultarOpinion() {
const queryClient = useQueryClient();
const viewingTenantId = useTenantViewStore((s) => s.viewingTenantId);
const { selectedContribuyenteId } = useContribuyenteStore();
return useMutation({
mutationFn: () => consultarOpinion(selectedContribuyenteId || undefined),
onSuccess: () => {
queryClient.invalidateQueries({ queryKey: ['opiniones', viewingTenantId, selectedContribuyenteId] });
},
});
}
export function useDescargarPdf() {
return useMutation({
mutationFn: async (id: number) => {
const blob = await descargarOpinionPdf(id);
const url = URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = `opinion_cumplimiento_${id}.pdf`;
a.click();
URL.revokeObjectURL(url);
},
});
}