67 lines
1.7 KiB
JavaScript
67 lines
1.7 KiB
JavaScript
export default async ({ app }) => {
|
|
/*
|
|
window.addEventListener('error',
|
|
e => onWindowError(e));
|
|
window.addEventListener('unhandledrejection',
|
|
e => onWindowRejection(e));
|
|
|
|
,onWindowError(event) {
|
|
errorHandler(event.error);
|
|
}
|
|
,onWindowRejection(event) {
|
|
errorHandler(event.reason);
|
|
}
|
|
*/
|
|
app.config.errorHandler = (err, vm, info) => {
|
|
errorHandler(err, vm)
|
|
}
|
|
|
|
function errorHandler (err, vm) {
|
|
let message
|
|
let tMessage
|
|
let res = err.response
|
|
|
|
// XXX: Compatibility with old JSON service
|
|
if (err.name === 'JsonException') {
|
|
res = {
|
|
status: err.statusCode,
|
|
data: { error: { message: err.message } }
|
|
}
|
|
}
|
|
|
|
if (res) {
|
|
const status = res.status
|
|
|
|
if (status >= 400 && status < 500) {
|
|
switch (status) {
|
|
case 401:
|
|
tMessage = 'loginFailed'
|
|
break
|
|
case 403:
|
|
tMessage = 'authenticationRequired'
|
|
vm.$router.push('/login')
|
|
break
|
|
case 404:
|
|
tMessage = 'notFound'
|
|
break
|
|
default:
|
|
message = res.data.error.message
|
|
}
|
|
} else if (status >= 500) {
|
|
tMessage = 'internalServerError'
|
|
}
|
|
} else {
|
|
tMessage = 'somethingWentWrong'
|
|
console.error(err)
|
|
}
|
|
|
|
if (tMessage) {
|
|
message = vm.$t(tMessage)
|
|
}
|
|
vm.$q.notify({
|
|
message,
|
|
type: 'negative'
|
|
})
|
|
}
|
|
}
|