65 lines
1.6 KiB
TypeScript
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,
|
|
});
|
|
}
|