Proyectos de Subversion LeadersLinked - SPA

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
3494 stevensc 1
import { useCallback } from 'react';
2
import { useSearchParams } from 'react-router-dom';
3
 
4
import { useFetch } from './useFetch';
5
import { debounce } from '@utils';
6
 
7
export function useSearch(
8
  url = '',
9
  config = {
10
    debounceDelay: 300,
11
    initialSearchTerm: '',
12
    params: undefined
13
  }
14
) {
15
  const [searchParams, setSearchParams] = useSearchParams();
16
 
17
  const search = searchParams.get('search') || config.initialSearchTerm || '';
18
  const debounceDelay = config.debounceDelay || 300;
19
  const params = config.params;
20
 
21
  const { data, loading, refetch } = useFetch(url, {
22
    params: { ...params, search }
23
  });
24
 
25
  const handleSearch = useCallback(
26
    debounce((value) => {
27
      searchParams.set('search', value);
28
      setSearchParams(searchParams);
29
    }, debounceDelay),
30
    [debounceDelay]
31
  );
32
 
33
  return {
34
    data,
35
    loading,
36
    searchTerm: search,
37
    refetch,
38
    handleSearch
39
  };
40
}