import axios from 'axios' import { useUsersStore } from '@/stores/usersStore' import router from '@/router' axios.defaults.baseURL = import.meta.env.VITE_API_URL //axios.defaults.timeout = 2000; axios.defaults.headers['Content-Type'] = 'application/json; charset=utf-8' import { useDataStore } from '@/stores/dataStore' // İstek Öncesinde Çalışacak Bir Fonksiyon axios.interceptors.request.use( function (config) { const dataStore = useDataStore() if (!dataStore.isLoading) dataStore.isLoading = true // İstek gönderilmeden önce yapılacak işlemler //console.log('İstek Yapılıyor:', config) const token = sessionStorage.getItem('token') if (!token) { console.log('No token found') } else { config.headers['Authorization'] = `Bearer ${token}` } return config }, function (error) { // İstek gönderilmeden önce hata oluşursa burada yakalanır return Promise.reject(error) } ) // İstek Sonrası Çalışacak Bir Fonksiyon axios.interceptors.response.use( function (response) { const dataStore = useDataStore() dataStore.isLoading = false // Yanıt başarılı olursa yapılacak işlemler //console.log('Yanıt Alındı:', response) return response }, function (error) { const usersStore = useUsersStore() const dataStore = useDataStore() dataStore.isLoading = false // Yanıtta hata oluşursa burada yakalanır // error.status kodu undefined geliyor if (error.response.status === 401) { const token = sessionStorage.getItem(usersStore.userStorageKeys.TOKEN) if (token !== undefined) { usersStore.ResetUserData() router.push('/login') } } return Promise.reject(error) } ) export default axios