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.
115 lines
3.1 KiB
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 || "WMi-cancel" }}</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: "WMi-cancel",
|
|
color_icon: "white",
|
|
y: "",
|
|
x: ""
|
|
};
|
|
export default {
|
|
data: () => ({
|
|
messages: [{
|
|
snackbar: true,
|
|
content: "dsada",
|
|
timeout: 3000,
|
|
color: "red",
|
|
icon: "WMi-cancel",
|
|
color_icon: "white"
|
|
},{
|
|
snackbar: true,
|
|
content: "wersdcasd",
|
|
timeout: 3000,
|
|
color: "red",
|
|
icon: "WMi-cancel",
|
|
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> |