mirror of
https://github.com/QuivrHQ/quivr.git
synced 2024-12-15 09:32:22 +03:00
caf70def6d
error lint
47 lines
1.2 KiB
TypeScript
47 lines
1.2 KiB
TypeScript
import axios, {
|
|
AxiosError,
|
|
AxiosInstance,
|
|
InternalAxiosRequestConfig,
|
|
} from "axios";
|
|
|
|
import { useSupabase } from "@/lib/context/SupabaseProvider";
|
|
|
|
import { DEFAULT_BACKEND_URL } from "../config/CONSTANTS";
|
|
|
|
const axiosInstance = axios.create({
|
|
baseURL: `${process.env.NEXT_PUBLIC_BACKEND_URL ?? DEFAULT_BACKEND_URL}`,
|
|
});
|
|
|
|
export const useAxios = (): { axiosInstance: AxiosInstance } => {
|
|
let { session } = useSupabase();
|
|
const { supabase } = useSupabase();
|
|
|
|
axiosInstance.interceptors.request.clear();
|
|
axiosInstance.interceptors.request.use(
|
|
async (value: InternalAxiosRequestConfig) => {
|
|
// Check if the session is valid
|
|
if (session?.expires_at && session.expires_at * 1000 < Date.now()) {
|
|
// If the session is not valid, refresh it
|
|
const { data, error } = await supabase.auth.refreshSession();
|
|
if (error) {
|
|
throw error;
|
|
}
|
|
session = data.session;
|
|
}
|
|
|
|
value.headers["Authorization"] = `Bearer ${session?.access_token ?? ""}`;
|
|
|
|
return value;
|
|
},
|
|
(error: AxiosError) => {
|
|
console.error({ error });
|
|
|
|
return Promise.reject(error);
|
|
}
|
|
);
|
|
|
|
return {
|
|
axiosInstance,
|
|
};
|
|
};
|