import { refreshAccessToken } from './stores/auth.js'; const API_URL = import.meta.env.VITE_API_URL || 'http://localhost/api'; async function fetchAPI(endpoint, options = {}, retryAfterRefresh = true) { const response = await fetch(`${API_URL}${endpoint}`, { ...options, headers: { 'Content-Type': 'application/json', ...options.headers, }, credentials: 'include', // Always include credentials }); // If we get a 401 and haven't already retried, attempt token refresh // Uses centralized refresh from auth.js (includes retry logic) if (response.status === 401 && retryAfterRefresh) { const refreshed = await refreshAccessToken(); if (refreshed) { // Retry the original request (but don't retry again if it fails) return fetchAPI(endpoint, options, false); } } if (!response.ok) { throw new Error(`API error: ${response.statusText}`); } return response.json(); } export async function getStreamKey() { return fetchAPI('/stream/key'); } export async function regenerateStreamKey() { return fetchAPI('/stream/key/regenerate', { method: 'POST', }); } export async function validateStreamKey(key) { return fetchAPI(`/stream/validate/${key}`); } export async function getStreamStats(streamKey) { return fetchAPI(`/stream/stats/${streamKey}`); }