import { useQuery } from "@tanstack/react-query"; import { getCommitSignatures } from "~/fns/security"; export type CommitSignature = Awaited>[number]; const MAX_SHAS = 90; const NO_SIGNATURES: Record = {}; export const commitSignaturesQueryKey = (owner: string, repo: string, shas: string[]) => ["commit-signatures", owner, repo, shas.join(",")] as const; /** Loads verification badges after render so commit lists never block on signature checks. */ export function useCommitSignatures(owner: string, repo: string, shas: string[]): Record { const wanted = shas.slice(0, MAX_SHAS); const query = useQuery({ queryKey: commitSignaturesQueryKey(owner, repo, wanted), queryFn: async () => { const rows = await getCommitSignatures({ data: { owner, repo, shas: wanted } }); return Object.fromEntries(rows.map((row) => [row.sha, row])); }, enabled: wanted.length > 0, }); return query.data ?? NO_SIGNATURES; }