tdc-js-modules
Version:
63 lines • 2.63 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 usePost.
* Utilidad principal de la aplicación para postear data 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.
* Llamar programaticamente una función post(body: any) cuando se necesite postear data.
* @param url: URL de la consulta
* @param config: Configuración de tipo UsePostConfigType
*/
function usePost(url, config) {
if (config === void 0) { config = {}; }
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(false), loading = _c[0], setLoading = _c[1];
var _d = react_1.useState(undefined), response = _d[0], setResponse = _d[1];
var user = sessionStorage.getItem('user');
/*let requestVariables = {method: 'POST', headers, signal};*/
var headers = {};
/* if (user) {
const parsed_user = JSON.parse(user);
headers['Authorization'] = `JWT ${parsed_user.jwt}`;
}*/
var post = function (body, cb) {
if (body === void 0) { body = {}; }
if (cb === void 0) { cb = undefined; }
setLoading(true);
headers['Content-Type'] = 'application/json';
axios_1.default
.post(url, body, { headers: headers })
.then(function (res) {
if (config.transformFunction) {
setData(config.transformFunction(res));
}
else {
setData(res);
}
setResponse(res);
setLoading(false);
if (res.status === 200) {
cb && cb();
}
/*console.log('HTTP-LOG POST', {url, body, data: res.data})*/
})
.catch(function (err) {
setError(err);
setLoading(false);
setResponse(err.response);
/*console.log('HTTP-LOG-ERROR POST', {url, body, error: err, response: err.response})*/
});
};
return { data: data, error: error, loading: loading, response: response, post: post };
}
exports.default = usePost;
//# sourceMappingURL=usePost.js.map