Files
hossein-por-shop/frontend/plugins/axios.ts
T
2025-03-13 20:32:17 +03:30

50 lines
1.3 KiB
TypeScript

import axiosOriginal from "axios";
import { useAuth } from "~/composables/api/auth/useAuth";
import { API_ENDPOINTS } from "~/constants";
import Logger from "~/tools/logger";
export default defineNuxtPlugin(() => {
const config = useRuntimeConfig();
const { token, logout } = useAuth();
const axios = axiosOriginal.create({
// timeout: 30000,
// timeoutErrorMessage: "فرآیند بیش از حد انتظار طول کشید",
baseURL: config.public.API_BASE_URL,
});
axios.interceptors.request.use((config) => {
if (
!config.url?.includes(API_ENDPOINTS.auth.signin) &&
!config.url?.includes(API_ENDPOINTS.account.send_otp)
) {
config.headers.Authorization = token.value
? `Bearer ${token.value}`
: undefined;
}
return config;
});
axios.interceptors.response.use(
(response) => {
return response;
},
async function (error) {
await Logger.axiosErrorLog(error);
// if (error.status === 401) {
// logout();
// }
return Promise.reject(error);
}
);
return {
provide: {
axios,
},
};
});