tdc-js-modules
Version:
110 lines • 4.41 kB
JavaScript
;
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