Set up a global notification handler & Error view & Modal component

This commit is contained in:
Bubka
2023-09-28 11:27:45 +02:00
parent e37c0c9ea5
commit 73e36edd9c
7 changed files with 198 additions and 12 deletions

67
resources/js_vue3/stores/notify.js vendored Normal file
View File

@ -0,0 +1,67 @@
import { defineStore } from 'pinia'
import router from '@/router'
const { notify } = useNotification()
export const useNotifyStore = defineStore({
id: 'notify',
state: () => {
return {
err: null,
message: null,
originalMessage: null,
debug: null,
}
},
getters: {
},
actions: {
parseError(err) {
this.$reset
this.err = err
// Hnalde axios response error
if (err.response) {
if (err.response.status === 407) {
this.message = trans('errors.auth_proxy_failed'),
this.originalMessage = trans('errors.auth_proxy_failed_legend')
}
else if (err.response.status === 403) {
this.message = trans('errors.unauthorized'),
this.originalMessage = trans('errors.unauthorized_legend')
}
else if(err.response.data) {
this.message = err.response.data.message,
this.originalMessage = err.response.data.originalMessage ?? null
this.debug = err.response.data.debug ?? null
}
} else {
this.message = err.message
this.debug = err.stack ?? null
}
// else if (err.request) {
//
},
error(err) {
this.parseError(err)
router.push({ name: 'genericError' })
},
info(notification) {
notify({ type: 'is-success', ...notification})
},
warn(notification) {
notify({ type: 'is-warning', ...notification})
},
alert(notification) {
notify({ type: 'is-danger', ...notification})
},
},
})