21 lines · 750 B
import { useQuery } from "@tanstack/react-query";
import { getReactors } from "~/fns/reactions";
import type { ReactionContent, ReactionSubject } from "~/lib/reactions";

const REACTORS_STALE_MS = 30 * 1000;

type Input = { owner: string; repo: string; subjectType: ReactionSubject; subjectId: string; content: ReactionContent };

export const reactorsQueryKey = (input: Input) =>
  ["reactors", input.subjectType, input.subjectId, input.content] as const;

/** Loads reactor names only once a pill is hovered or focused. */
export function useReactors(input: Input, enabled: boolean) {
  return useQuery({
    queryKey: reactorsQueryKey(input),
    queryFn: () => getReactors({ data: input }),
    enabled,
    staleTime: REACTORS_STALE_MS,
  });
}