// electron/api/axiosClient.ts import axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios'; import { getToken } from '../utils/tokenHelper.js'; const TOKEN_KEY = 'auth_token'; const api: AxiosInstance = axios.create({ baseURL: 'https://wired-terminally-muskrat.ngrok-free.app/api/v1', // 🔁 your backend timeout: 10000, }); // --- Request Interceptor --- api.interceptors.request.use( async (config: AxiosRequestConfig): Promise => { const token = await getToken(TOKEN_KEY); if (token && config.headers) { config.headers.token = token; config.headers['ngrok-skip-browser-warning'] = 98098; } console.log(`[Axios] ${config.method?.toUpperCase()} ${config.url}`); return config; }, (error) => Promise.reject(error) ); // --- Response Interceptor --- api.interceptors.response.use( (response: AxiosResponse) => response.data, async (error) => { console.error('[Axios Error]', error.message); if (error.response?.status === 401) { console.warn('Token expired — trigger refresh logic if needed'); } return Promise.reject(error); } ); export default api;