cyb/src/pages/robot/Brain/useGraphLimit.ts

import { useCallback, useEffect } from 'react';
import { useSearchParams } from 'react-router-dom';

const DEFAULT_LIMIT = 10000;

// WIP
function useGraphLimit(initialLimit?: number) {
  const [searchParams, setSearchParams] = useSearchParams();

  const limit = Number(searchParams.get('limit')) || initialLimit || DEFAULT_LIMIT;

  const style = searchParams.get('style');

  const addLimit = useCallback(
    (limit: number) => {
      setSearchParams((prev) => {
        const next = new URLSearchParams(prev);
        next.set('limit', String(limit));
        return next;
      });
    },
    [setSearchParams]
  );

  useEffect(() => {
    addLimit(limit);
  }, [limit, addLimit]);

  return {
    limit,
    isCurvedStyle: style === 'curved',
    setSearchParams,
    setLimit: (limit: number) => {
      addLimit(limit);
    },
  };
}

export default useGraphLimit;

Neighbours