// 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 => { 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;