Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

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

Rev Autor Línea Nro. Línea
6953 stevensc 1
import { useEffect, useLayoutEffect, useState } from 'react'
6772 stevensc 2
import { axios } from '../utils'
3
 
6814 stevensc 4
const useFetchHelper = (helper = '', defaultValue = []) => {
6808 stevensc 5
  const [data, setData] = useState(defaultValue)
6772 stevensc 6
  const [loading, setLoading] = useState(false)
7
  const [error, setError] = useState(null)
8
 
9
  useEffect(() => {
6953 stevensc 10
    setData(defaultValue)
11
  }, [defaultValue])
12
 
13
  useLayoutEffect(() => {
6772 stevensc 14
    const getHelper = (helper) => {
15
      setLoading(true)
16
 
17
      axios
18
        .get(`/helpers/${helper}`)
19
        .then(({ data: response }) => {
20
          const { data, success } = response
21
 
22
          if (!success) {
23
            const error =
24
              typeof data === 'string' ? data : 'Ha ocurrido un error'
25
            setError(error)
26
            return
27
          }
28
 
6810 stevensc 29
          if (!Array.isArray(data)) {
30
            const adapterData = Object.entries(data).map(([key, value]) => {
31
              return { value: key, name: value }
32
            })
33
            setData(adapterData)
34
            return
35
          }
36
 
6772 stevensc 37
          setData(data)
38
        })
39
        .catch((err) => setError(`Error: ${err}`))
40
        .finally(() => setLoading(false))
41
    }
42
 
43
    getHelper(helper)
44
  }, [])
45
 
46
  return { data, error, loading }
47
}
48
 
49
export default useFetchHelper