diff --git a/src/boot/axios.js b/src/boot/axios.js index 07a52ea7..7844d9bd 100644 --- a/src/boot/axios.js +++ b/src/boot/axios.js @@ -24,17 +24,6 @@ const onRequestError = error => { const onResponseError = error => { const userStore = useUserStore(); - let message = error.message; - - const response = error.response; - const responseData = response && response.data; - const responseError = responseData && response.data.error; - if (responseError) { - message = responseError.message; - } - - notify(message, 'negative'); - if (userStore.isLoggedIn && response?.status === 401) { if (!Router) return; @@ -73,6 +62,40 @@ export default boot(({ app }) => { // so you can easily perform requests against your app's API app.config.globalProperties.$jApi = jApi; + app.config.errorHandler = async error => { + let message; + const response = error.response; + const responseData = response?.data; + const responseError = responseData && response.data.error; + if (responseError) { + message = responseError.message; + } + + switch (response?.status) { + case 422: + if (error.name == 'ValidationError') + message += + ' "' + + responseError.details.context + + '.' + + Object.keys(responseError.details.codes).join(',') + + '"'; + break; + case 500: + message = 'errors.statusInternalServerError'; + break; + case 502: + message = 'errors.statusBadGateway'; + break; + case 504: + message = 'errors.statusGatewayTimeout'; + break; + } + + console.error(error); + notify(message ?? 'globals.error', 'negative', 'error'); + }; + app.provide('jApi', jApi); app.provide('api', api); });