import { useEffect, useRef } from "react";

import { type RafCallback, RafManager } from "@/helpers/raf";

export default function useRaf(
  callback: RafCallback,
  deps?: React.DependencyList,
) {
  const callbackId = useRef<symbol | null>(null);

  useEffect(() => {
    const rafManager = RafManager.getInstance();
    callbackId.current = rafManager.add(callback);
    return () => {
      if (callbackId.current) {
        rafManager.remove(callbackId.current);
      }
    };
  }, [callback]);
}
