datasafer-laravel
Version:
Extensão do sitema de frontend para o Laravel Mix
100 lines (83 loc) • 2.51 kB
JavaScript
export default (function() {
window.axios = require("axios");
window.axios_no_csrf = require("axios");
window.axios.defaults.headers.common["X-Requested-With"] = "XMLHttpRequest";
/**
* Next we will register the CSRF Token as a common header with Axios so that
* all outgoing HTTP requests automatically have it attached. This is just
* a simple convenience so we don't have to attach every token manually.
*/
let token = document.head.querySelector('meta[name="csrf-token"]');
if (token) {
window.axios.defaults.headers.common["X-CSRF-TOKEN"] = token.content;
} else {
console.error(
"CSRF token not found: https://laravel.com/docs/csrf#csrf-x-csrf-token"
);
}
var numberOfAjaxCAllPending = 0;
// Add a request interceptor
axios.interceptors.request.use(
function(config) {
numberOfAjaxCAllPending++;
ajaxLoadStart();
return config;
},
function(error) {
return Promise.reject(error);
}
);
// Add a response interceptor
axios.interceptors.response.use(
(response) => {
numberOfAjaxCAllPending--;
if (numberOfAjaxCAllPending == 0) {
ajaxLoadStop();
}
return response;
},
(error) => {
// Do something with response error
if (422 === error.response.status) {
//If ther is an error message show the first of them
var error_message = "Erro desconhecido...";
var data = error.response.data;
if (data != undefined) {
if (data.errors != undefined) {
//Laravel form validation errors handling
var lkey = Object.keys(data.errors)[0];
error_message = data.errors[lkey][0];
} else {
if (data.message != undefined) {
error_message = data.message;
}
}
}
swal({
position: "top-end",
type: "error",
backdrop: false,
allowOutsideClick: false,
text: error_message,
showConfirmButton: false,
timer: 3000
});
} else {
swal({
position: "top-end",
type: "error",
backdrop: false,
allowOutsideClick: false,
text: "Erro inesperado...",
showConfirmButton: false,
timer: 3000
});
}
numberOfAjaxCAllPending--;
if (numberOfAjaxCAllPending == 0) {
ajaxLoadStop();
}
return Promise.reject(error);
}
);
})();