import axios, { AxiosResponse } from "axios"; import { API_URL } from "@/shared/constants/apiEndpoints"; import { getLocale } from "next-intl/server"; import { getCurrentLocale } from "@/shared/lib/getCurrentLocale"; import { useAuthStore } from "@/shared/store/authStore"; const apiClient = axios.create({ baseURL: API_URL || "https://api.quyoshli.uz/api", }); apiClient.interceptors.request.use(async (config) => { console.log("API request", config); const token = useAuthStore.getState().user?.access_token; if (token) { config.headers.Authorization = `Bearer ${token}`; } let language = "uz"; try { language = await getLocale(); } catch (e) { language = getCurrentLocale() || "uz"; } config.headers["Accept-Language"] = language; return config; }); apiClient.interceptors.response.use( (response) => response, (error) => { console.error("API error:", error); return Promise.reject(error); } ); export const GET = ( url: string, params?: object ): Promise> => apiClient.get(url, { params }); export const POST = (url: string, data: object): Promise> => apiClient.post(url, data); export const PUT = (url: string, data: object): Promise> => apiClient.put(url, data); export const PATCH = ( url: string, data: object ): Promise> => apiClient.patch(url, data); export const DELETE = ( url: string, data: object ): Promise> => apiClient.delete(url, data); export default apiClient;