import axios from 'axios'; const baseURL = typeof window !== 'undefined' ? '/api' : (process.env.NEXT_PUBLIC_API_URL || (process.env.NODE_ENV === 'development' ? 'http://localhost:4001/api' : 'https://apicanina.parsaaghayi.ir/api')); const api = axios.create({ baseURL, timeout: 10000, headers: { 'Content-Type': 'application/json', }, }); // Interceptor to add auth token in request headers api.interceptors.request.use( (config) => { let token = null; if (typeof window !== 'undefined') { token = localStorage.getItem('accessToken'); } if (token && config.headers) { config.headers.Authorization = `Bearer ${token}`; } return config; }, (error) => Promise.reject(error) ); // Interceptor to handle 401/403 token expiration globally api.interceptors.response.use( (response) => response, (error) => { if (error.response && (error.response.status === 401 || error.response.status === 403)) { if (typeof window !== 'undefined') { localStorage.removeItem('accessToken'); localStorage.removeItem('refreshToken'); try { // Dynamic import to avoid circular dependency const { useUserStore } = require('../store/userStore'); useUserStore.getState().logout(); } catch { // Ignore if store not initialized } } } return Promise.reject(error); } ); export default api;