79 lines
2.3 KiB
TypeScript
79 lines
2.3 KiB
TypeScript
// electron/api/axiosClient.ts
|
|
import axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios';
|
|
import { getToken } from '../utils/tokenHelper.js';
|
|
import chalk from "chalk";
|
|
import { sendTokenExpired } from '../ipc/ipcHandler.js';
|
|
import https from 'https';
|
|
import { getBaseURL } from './baseURL.js';
|
|
|
|
const TOKEN_KEY = 'ACCESS_TOKEN';
|
|
|
|
const Base_URL = await getBaseURL()
|
|
|
|
const httpsAgent = new https.Agent({
|
|
rejectUnauthorized: false
|
|
});
|
|
|
|
|
|
console.log('Base_URL$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$' ,Base_URL)
|
|
|
|
const api: AxiosInstance = axios.create({
|
|
// baseURL: 'https://quality-friendly-goldfish.ngrok-free.app/api/v1/va', // 🔁 your backend
|
|
baseURL: `${Base_URL}/api/v1/va`,
|
|
httpsAgent
|
|
// timeout: 10000,
|
|
});
|
|
|
|
// console.log("Creating Axios Instance", axios.VERSION);
|
|
// console.log("Axios .get reference:", api.get);
|
|
// console.log("Axios .request reference:", api.request);
|
|
|
|
// --- Request Interceptor ---
|
|
api.interceptors.request.use(
|
|
async (config: AxiosRequestConfig): Promise<any> => {
|
|
const token = await getToken(TOKEN_KEY);
|
|
config.headers = config.headers || {}
|
|
|
|
if (token) {
|
|
config.headers['token'] = token;
|
|
config.headers['ngrok-skip-browser-warning'] = 'true';
|
|
}
|
|
|
|
return config;
|
|
},
|
|
(error) => Promise.reject(error)
|
|
);
|
|
|
|
// --- Response Interceptor ---
|
|
// api.interceptors.response.use(
|
|
// (response: AxiosResponse) => response.data,
|
|
// async (error) => {
|
|
// console.error('[Axios Error]', error.status);
|
|
// if (error.status === 401 || 403) {
|
|
// console.warn('Token expired — trigger refresh logic if needed');
|
|
// // sendTokenExpired();
|
|
// }
|
|
// return Promise.reject(error);
|
|
// }
|
|
// );
|
|
|
|
api.interceptors.response.use(
|
|
(response: AxiosResponse) => response.data,
|
|
async (error) => {
|
|
|
|
console.log(error, "Line 46")
|
|
const status = error?.response?.status;
|
|
|
|
console.error('[Axios Error]', status);
|
|
|
|
// Only logout when token actually expired
|
|
if (status === 401 || status === 403) {
|
|
console.warn('Token expired — trigger refresh logic if needed');
|
|
sendTokenExpired();
|
|
}
|
|
|
|
return Promise.reject(error);
|
|
}
|
|
);
|
|
|
|
export default api; |