Skip to content

Commit 452ac82

Browse files
committed
display error message from API requests if available
1 parent 353634b commit 452ac82

1 file changed

Lines changed: 20 additions & 8 deletions

File tree

src/components/ErrorBoundary.vue

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,34 @@
11
<template lang="pug">
22
div
3-
b-alert(variant="danger", v-for="error in errors", :key='error.time', :show='!error.dismissed', dismissible, @dismissed="error.dismissed = false")
4-
| {{ error.msg }}.
5-
| See dev console (F12) and/or server logs for more info.
6-
slot
3+
b-alert(variant="danger", v-for="error in errors", :key='error.time', :show='!error.dismissed', dismissible, @dismissed="error.dismissed = false")
4+
| {{ error.msg }}
5+
slot
76
</template>
87

98
<script>
109
// Based on: https://medium.com/@dillonchanis/handling-errors-in-vue-with-error-boundaries-91f6ead0093b
1110
export default {
1211
name: 'ErrorBoundary',
1312
data() {
14-
return { errors: [] };
13+
return {
14+
errors: []
15+
};
1516
},
1617
errorCaptured(err, vm, info) {
17-
//console.error("Error captured!");
18-
//console.error(err, vm, info);
19-
const msg = err.name && err.message ? err.name + ': ' + err.message : err;
18+
// console.error("Error captured!");
19+
// console.error(err, vm, info);
20+
21+
//default error message
22+
let msg = (err.name && err.message) ? (err.name + ": " + err.message + ". See dev console (F12) and/or server logs for more info.") : err;
23+
24+
//use server error response if available
25+
//err.isAxiosError doesn't help much here…
26+
if (err.response && err.response.data && err.response.data.message) {
27+
msg = err.response.data.message;
28+
}
29+
30+
//dedupe
31+
if (this.errors.some(e => e.msg == msg)) return;
2032
this.errors.push({
2133
msg: msg,
2234
time: new Date().toISOString(),

0 commit comments

Comments
 (0)