Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 2880 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
2873 stevensc 1
import { useSearchParams } from 'react-router-dom'
1548 stevensc 2
 
2873 stevensc 3
export function useSearchQuery() {
4
  const [searchParams, setSearchParams] = useSearchParams()
1548 stevensc 5
 
2874 stevensc 6
  const getParam = (key) => searchParams.get(key) ?? ''
2873 stevensc 7
 
8
  const setParam = (key, value) => {
2880 stevensc 9
    if (!value) return deleteParam(key)
2873 stevensc 10
    searchParams.set(key, value)
11
    setSearchParams(searchParams)
1548 stevensc 12
  }
13
 
2873 stevensc 14
  const deleteParam = (key) => {
15
    searchParams.delete(key)
16
    setSearchParams(searchParams)
17
  }
1548 stevensc 18
 
2873 stevensc 19
  const getAllParams = () => {
20
    return Object.fromEntries([...searchParams.entries()])
21
  }
2872 stevensc 22
 
2887 stevensc 23
  const getStringParams = () => {
24
    const paramsString = searchParams.toString()
25
    return paramsString.length > 0 ? `?${paramsString}` : ''
26
  }
27
 
1548 stevensc 28
  return {
2873 stevensc 29
    getParam,
30
    setParam,
31
    deleteParam,
2887 stevensc 32
    getAllParams,
33
    getStringParams
1548 stevensc 34
  }
35
}