22 lines · 756 B
import { useEffect, useState } from "react";
import { getPullCodeAlerts } from "~/fns/security";

export type PullCodeAlert = Awaited<ReturnType<typeof getPullCodeAlerts>>[number];

/** Fetches code scanning alerts for a pull request after render, so diffs load without waiting on them. */
export function usePullCodeAlerts(owner: string, repo: string, number: number): PullCodeAlert[] {
  const [alerts, setAlerts] = useState<PullCodeAlert[]>([]);
  useEffect(() => {
    let cancelled = false;
    getPullCodeAlerts({ data: { owner, repo, number } })
      .then((rows) => {
        if (!cancelled) setAlerts(rows);
      })
      .catch(() => undefined);
    return () => {
      cancelled = true;
    };
  }, [owner, repo, number]);
  return alerts;
}