"use client"; import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; import { api } from "@/lib/api-client"; import type { AlertListFilters, AlertUpdatePayload } from "@/lib/types"; export function useAlerts(filters: AlertListFilters = {}) { return useQuery({ queryKey: ["alerts", filters], queryFn: () => api.listAlerts(filters), }); } export function useAlert(alertId: string | undefined) { return useQuery({ queryKey: ["alerts", "detail", alertId], queryFn: () => api.getAlert(alertId as string), enabled: Boolean(alertId), }); } function useInvalidateAlerts() { const queryClient = useQueryClient(); return () => queryClient.invalidateQueries({ queryKey: ["alerts"] }); } export function useUpdateAlert(alertId: string) { const invalidate = useInvalidateAlerts(); return useMutation({ mutationFn: (payload: AlertUpdatePayload) => api.updateAlert(alertId, payload), onSuccess: invalidate, }); } export function useMarkAlertRead() { const invalidate = useInvalidateAlerts(); return useMutation({ mutationFn: (alertId: string) => api.markAlertRead(alertId), onSuccess: invalidate, }); } export function useResolveAlert() { const invalidate = useInvalidateAlerts(); return useMutation({ mutationFn: (alertId: string) => api.resolveAlert(alertId), onSuccess: invalidate, }); }