import { useInfiniteQuery } from "@tanstack/react-query"; import type { AuditEvent, CursorPage } from "@umt/contracts"; import { apiData } from "~/lib/api.ts"; import { qk } from "~/lib/query-keys.ts"; export type AuditFilters = { actorType?: string; action?: string; targetType?: string; targetId?: string; }; /** 审计事件(新→旧),游标"加载更多" */ export function useAuditEvents(filters: AuditFilters) { return useInfiniteQuery({ queryKey: qk.list("audit", filters), initialPageParam: undefined as string | undefined, queryFn: ({ pageParam, signal }) => apiData>("/audit-events", { params: { ...filters, cursor: pageParam, limit: 50 }, signal, }), getNextPageParam: (last) => last.nextCursor ?? undefined, }); }