UNPKG

tdc-js-modules

Version:

110 lines 4.41 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); var react_1 = require("react"); var axios_1 = __importDefault(require("axios")); /** * Hook useGet. * Utilidad principal de la aplicación para hacer llamadas a APIs. * Este hook entrega una intefaz funcional que permite: * Consultar y transformar un la data traida de la API a través de una función transformadora. * Indicar que tipo de datos retorna la consulta a través de un Genérico. * Setear un valor inicial a la consulta y señalar si debería preguntarse onMount(al cargar el componente). * Llamar programaticamente un refetch si es necesario (funcion fetch()) * @param url: URL de la consulta * @param config: Configuración de tipo UseFetchConfigType */ function useGet(url, config) { if (config === void 0) { config = { onMount: false, tokenAuthHeader: 'Token' }; } var _a = react_1.useState(config.initialValue), data = _a[0], setData = _a[1]; var _b = react_1.useState(null), error = _b[0], setError = _b[1]; var _c = react_1.useState(undefined), response = _c[0], setResponse = _c[1]; var _d = react_1.useState(true), loading = _d[0], setLoading = _d[1]; var _e = react_1.useState(false), trigger = _e[0], setTrigger = _e[1]; var user = sessionStorage.getItem('user'); var headers = {}; if (user) { try { var parsed_user = JSON.parse(user); headers['Authorization'] = config.tokenAuthHeader + " " + parsed_user.jwt; } catch (e) { } } var fetch = function () { setLoading(function (prevState) { return !prevState; }); setError(null); setData(config.initialValue); setTrigger(true); }; var getData = function () { setLoading(true); axios_1.default .get(url, { headers: headers }) .then(function (res) { if (config.transformFunction) { setData(config.transformFunction(res.data)); } else { setData(res.data); } setLoading(false); setResponse(res); /*console.log('HTTP-LOG GET', {url, data: res.data})*/ }) .catch(function (err) { /* console.log("catch") console.log("ERR", JSON.stringify(err), err, err.message, err.response);*/ setLoading(false); setError(err); setResponse(err.response); /*console.log('HTTP-LOG-GET-ERROR', {url, error: err, response: err.response})*/ throw err; }); }; react_1.useEffect(function () { if (config.onMount) { getData(); } }, [config.onMount]); react_1.useEffect(function () { if (trigger) { getData(); setTrigger(false); } }, [trigger]); return { data: data, error: error, loading: loading, response: response, fetch: fetch, setData: setData }; } function useGetMock(url, config) { if (config === void 0) { config = { onMount: false, tokenAuthHeader: 'Token', resolve: false }; } var _a = react_1.useState(config.initialValue), data = _a[0], setData = _a[1]; var _b = react_1.useState(null), error = _b[0], setError = _b[1]; var _c = react_1.useState(undefined), response = _c[0], setResponse = _c[1]; var _d = react_1.useState(true), loading = _d[0], setLoading = _d[1]; var _e = react_1.useState(false), trigger = _e[0], setTrigger = _e[1]; var sleep = function (ms) { return new Promise(function () { }); }; var fetch = function () { setLoading(function (prevState) { return !prevState; }); setError(null); setData(config.initialValue); setTrigger(true); }; var getData = function () { setLoading(true); }; react_1.useEffect(function () { if (config.onMount) { getData(); } }, [config.onMount]); react_1.useEffect(function () { if (trigger) { getData(); setTrigger(false); } }, [trigger]); return { loading: loading, fetch: fetch, setData: setData, data: data, error: error, response: response }; } exports.default = useGet; //# sourceMappingURL=useGet.js.map