<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>