'use client';

import { useCallback } from 'react';

export default function useInfiniteLoad({
  hasNextPage,
  isFetching,
  fetchNextPage
}: {
  hasNextPage: boolean;
  isFetching: boolean;
  fetchNextPage: () => void;
}) {
  const refCallback = useCallback(
    (node: HTMLDivElement | null) => {
      if (!node) return;

      if (!hasNextPage || isFetching) return;

      const observer = new IntersectionObserver(
        (entries) => {
          if (entries[0].isIntersecting) {
            fetchNextPage();
          }
        },
        { root: null, rootMargin: '200px', threshold: 0.1 }
      );

      observer.observe(node);

      return () => observer.disconnect();
    },
    [hasNextPage, isFetching, fetchNextPage]
  );

  return refCallback;
}
