import { useQuery, useQueryClient } from "@tanstack/react-query";
import { useAuth } from "@/hooks/useAuth";
import { authHeaders } from "@/lib/authHeaders";
import { getMyCredits, type CreditState } from "@/lib/credits.functions";

const KEY = (uid?: string) => ["credits", uid] as const;

export function useCredits() {
  const { user } = useAuth();
  const qc = useQueryClient();
  const q = useQuery({
    queryKey: KEY(user?.id),
    enabled: !!user,
    staleTime: 30_000,
    queryFn: async (): Promise<CreditState> =>
      getMyCredits({ headers: await authHeaders() }),
  });
  return {
    credits: q.data ?? null,
    isLoading: q.isLoading,
    refetch: () => qc.invalidateQueries({ queryKey: KEY(user?.id) }),
  };
}
