import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query' import { captureApi } from './captureApi' export function useTrackedOpportunities(p: { status?: string }) { return useQuery({ queryKey: ['slatematch', 'tracked', p.status ?? ''], queryFn: () => captureApi.list(p), }) } export function useTrackedOpportunity(id: string | null) { return useQuery({ queryKey: ['slatematch', 'tracked', 'one', id], queryFn: () => captureApi.get(id as string), enabled: !!id, }) } // A create or update changes the list; invalidate the whole tracked namespace so the new row appears. function useInvalidate() { const qc = useQueryClient() return () => void qc.invalidateQueries({ queryKey: ['slatematch', 'tracked'] }) } export function useCreateTrackedOpportunity() { const inv = useInvalidate() return useMutation({ mutationFn: captureApi.create, onSuccess: () => inv() }) } export function useUpdateTrackedOpportunity() { const inv = useInvalidate() return useMutation({ mutationFn: (v: { id: string; patch: Record }) => captureApi.update(v.id, v.patch), onSuccess: () => inv(), }) }