Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 3658 | Mostrar el archivo completo | | | Autoría | Ultima modificación | Ver Log |

Rev 3658 Rev 3719
Línea 1... Línea 1...
1
import { api } from '@api';
1
import { api } from '@api';
2
import { useApi } from './useApi';
2
import { useApi } from './useApi';
3
import { useAlert } from './useAlert';
3
import { useAlert } from './useAlert';
4
import { useEffect, useRef } from 'react';
4
import { useEffect, useRef } from 'react';
5
 
5
 
6
const getResources = async (url, params) => {
6
const getResources = async (url, params) => {
7
  return await api.get(url, { params });
7
  return await api.get(url, { params });
8
};
8
};
9
 
9
 
10
export function useFetch(url) {
10
export function useFetch(url) {
11
  const { showError } = useAlert();
11
  const { showError } = useAlert();
12
  const { loading, data, error, execute } = useApi(getResources);
12
  const { loading, data, error, execute } = useApi(getResources);
13
  const hasFetched = useRef(false);
13
  const hasFetched = useRef(false);
14
 
14
 
15
  useEffect(() => {
15
  useEffect(() => {
16
    if (!hasFetched.current && url) {
16
    if (!hasFetched.current && url) {
17
      execute(url);
17
      execute(url);
18
      hasFetched.current = true;
18
      hasFetched.current = true;
19
    } else if (url) {
19
    } else if (url) {
20
      execute(url);
20
      execute(url);
21
    }
21
    }
22
  }, [url, execute]);
22
  }, [url, execute]);
23
 
23
 
24
  useEffect(() => {
24
  useEffect(() => {
25
    if (error) showError(error);
25
    if (error) showError(error);
26
  }, [error, showError]);
26
  }, [error, showError]);
27
 
27
 
28
  return {
28
  return {
29
    data,
29
    data,
30
    loading,
30
    loading,
31
    refetch: () => execute(url)
31
    refetch: () => execute(url)
32
  };
32
  };
33
}
33
}