50 lines
1.3 KiB
TypeScript
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,
|
|
},
|
|
};
|
|
});
|