Files
Astronome/frontend/src/hooks/useTargets.ts
T
2026-04-10 00:20:32 +02:00

65 lines
1.6 KiB
TypeScript

import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';
import { api, type TargetsParams } from '../api';
export function useTargets(params: TargetsParams = {}) {
return useQuery({
queryKey: ['targets', params],
queryFn: () => api.targets.list(params),
staleTime: 30_000,
});
}
export function useTarget(id: string) {
return useQuery({
queryKey: ['target', id],
queryFn: () => api.targets.get(id),
enabled: !!id,
staleTime: 5 * 60_000,
});
}
export function useTargetVisibility(id: string) {
return useQuery({
queryKey: ['target-visibility', id],
queryFn: () => api.targets.visibility(id),
enabled: !!id,
staleTime: 5 * 60_000,
});
}
export function useTargetCurve(id: string) {
return useQuery({
queryKey: ['target-curve', id],
queryFn: () => api.targets.curve(id),
enabled: !!id,
staleTime: 5 * 60_000,
});
}
export function useTargetFilters(id: string) {
return useQuery({
queryKey: ['target-filters', id],
queryFn: () => api.targets.filters(id),
enabled: !!id,
staleTime: 5 * 60_000,
});
}
export function useTargetWorkflow(id: string, filterId: string) {
return useQuery({
queryKey: ['target-workflow', id, filterId],
queryFn: () => api.targets.workflow(id, filterId),
enabled: !!id && !!filterId,
staleTime: 60 * 60_000,
});
}
export function useTargetYearly(id: string, enabled = false) {
return useQuery({
queryKey: ['target-yearly', id],
queryFn: () => api.targets.yearly(id),
enabled: !!id && enabled,
staleTime: 60 * 60_000,
});
}