Proyectos de Subversion LeadersLinked - SPA

Rev

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

Rev Autor Línea Nro. Línea
707 stevensc 1
import { useState, useEffect } from 'react'
2
import { axios } from '../utils'
3
import { useDispatch } from 'react-redux'
4
import { addNotification } from '../redux/notification/notification.actions'
5
 
1622 stevensc 6
const useFetch = (url, defaultValue = {}) => {
707 stevensc 7
  const [data, setData] = useState(defaultValue)
1003 stevensc 8
  const [isLoading, setIsLoading] = useState(true)
707 stevensc 9
  const dispatch = useDispatch()
10
 
1363 stevensc 11
  const getResources = () => {
1304 stevensc 12
    setIsLoading(true)
13
 
707 stevensc 14
    axios
1622 stevensc 15
      .get(url)
758 stevensc 16
      .then(({ data }) => {
17
        if (!data.data) {
18
          setData(data)
19
          return
20
        }
707 stevensc 21
 
758 stevensc 22
        if (!data.success) {
707 stevensc 23
          const errorMessage =
24
            typeof data === 'string'
25
              ? data
26
              : Object.entries(data)
27
                  .map(([key, value]) => `${key}: ${value}`)
28
                  .join(', ')
29
          throw new Error(errorMessage)
30
        }
31
 
758 stevensc 32
        setData(data.data)
707 stevensc 33
      })
34
      .finally(() => setIsLoading(false))
35
  }
36
 
37
  useEffect(() => {
1363 stevensc 38
    getResources()
1622 stevensc 39
  }, [url])
707 stevensc 40
 
41
  return {
42
    data,
1067 stevensc 43
    mutate: setData,
1363 stevensc 44
    isLoading,
45
    refetch: getResources
707 stevensc 46
  }
47
}
48
 
49
export default useFetch