| import axios from 'axios'; | |
| import { supabase } from './supabaseClient'; | |
| export const API_BASE = (import.meta.env.VITE_API_BASE_URL || 'http://localhost:7860').replace(/\/$/, ''); | |
| // Pre-configured axios instance with auth + ngrok header | |
| export const api = axios.create({ | |
| baseURL: API_BASE, | |
| headers: { 'ngrok-skip-browser-warning': 'true' }, | |
| }); | |
| const AUTH_ENABLED = Boolean(import.meta.env.VITE_SUPABASE_URL); | |
| // Attach Supabase JWT to every request | |
| api.interceptors.request.use(async (config) => { | |
| if (!AUTH_ENABLED) return config; | |
| try { | |
| const { data: { session } } = await supabase.auth.getSession(); | |
| if (session?.access_token) { | |
| config.headers.Authorization = `Bearer ${session.access_token}`; | |
| } | |
| } catch { | |
| // No session — request goes without auth (backend will 401 if needed) | |
| } | |
| return config; | |
| }); | |