33 lines
805 B
TypeScript
33 lines
805 B
TypeScript
import axios, { AxiosRequestConfig } from "axios";
|
|
import { User } from "@/contexts/auth-context";
|
|
|
|
export const Api = axios.create({
|
|
baseURL: "http://localhost:8080",
|
|
responseType: "json",
|
|
});
|
|
|
|
Api.interceptors.request.use(async (config) => {
|
|
const jsonString = localStorage.getItem("userData");
|
|
if (jsonString) {
|
|
const userData: User = JSON.parse(jsonString);
|
|
config.headers.Authorization = `Bearer ${userData.token}`;
|
|
}
|
|
|
|
return config;
|
|
});
|
|
|
|
export const customInstance = <T>(
|
|
config: AxiosRequestConfig,
|
|
options?: AxiosRequestConfig,
|
|
): Promise<T> => {
|
|
const source = axios.CancelToken.source();
|
|
const promise = Api({
|
|
...config,
|
|
...options,
|
|
cancelToken: source.token,
|
|
paramsSerializer: { indexes: null },
|
|
}).then(({ data }) => data);
|
|
|
|
return promise;
|
|
};
|