You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
willaengine/resources/js/Global/components/Misc/Snackbar.vue

115 lines
3.1 KiB

<template>
<div>
<v-snackbar
v-for="(message, key) in messages"
:key="key"
:color="message.color || 'black'"
:timeout="message.timeout || 3000"
v-model="message.snackbar"
:bottom="message.y === 'bottom'"
:left="message.x === 'left'"
:right="message.x === 'right'"
:top="message.y === 'top'"
>
{{message.content || ''}}
<v-btn :color="message.color_icon || 'white'" text @click="message.snackbar = false" fab>
<v-icon :color="message.color_icon || 'white'">{{ message.icon || "fas fa-times" }}</v-icon>
</v-btn>
</v-snackbar>
</div>
</template>
<script>
import { mapActions, mapGetters } from "vuex";
import axios from "axios";
import { TokenService } from "@Global/services/storage.services";
import ApiService from "@Global/services/api.services";
import store from "@Core/store/index";
import commonRoute from "@Global/utils/common/routes";
var default_message = {
snackbar: true,
content: "",
timeout: 3000,
color: "red",
icon: "fas fa-times",
color_icon: "white",
y: "",
x: ""
};
export default {
data: () => ({
messages: [{
snackbar: true,
content: "dsada",
timeout: 3000,
color: "red",
icon: "fas fa-times",
color_icon: "white"
},{
snackbar: true,
content: "wersdcasd",
timeout: 3000,
color: "red",
icon: "fas fa-times",
color_icon: "white"
}]
}),
methods: {
errorResponseHandler(error) {
// check for errorHandle config
if (
error.config.hasOwnProperty("errorHandle") &&
error.config.errorHandle === false
) {
return Promise.reject(error);
}
// if has response show the error
if (error.response) {
if (error.response.status == 401) {
TokenService.removeToken();
ApiService.removeAuthHeader();
store.commit("auth/logout", {}, { root: true });
if (commonRoute.login() != window.location.pathname) {
window.location.href = commonRoute.login();
}
let new_message = { ...default_message };
new_message.content = "نام کاربری یا رمز عبور اشتباه است";
this.messages.push(new_message);
} else if (error.response.status == 422) {
if (typeof error.response.data.errors !== "undefined") {
for (const key in error.response.data.errors) {
if (
error.response.data.errors.hasOwnProperty(key)
) {
let new_message = { ...default_message };
new_message.content =
"نام کاربری یا رمز عبور اشتباه است";
this.messages.push(new_message);
}
}
}
} else if (error.response.status == 500) {
let new_message = { ...default_message };
new_message.content = "مشکل از سمت سرور";
this.messages.push(new_message);
}
}
},
successHandler(response) {
// if(response.status == 200 || response.status == 201) {
// if(typeof response.data.message !== 'undefined') {
// toast.success(response.data.message, response.data.title);
// }
// }
return response;
}
},
created() {
axios.interceptors.response.use(
this.successHandler,
this.errorResponseHandler
);
}
};
</script>