Nadoora / client /src /lib /api.ts
aiqknow's picture
Upload 402 files
b5adcbd verified
const BASE = import.meta.env.BASE_URL.replace(/\/$/, '');
export async function apiFetch<T>(path: string, options?: RequestInit): Promise<T> {
const token = localStorage.getItem('adminToken');
const headers = {
'Content-Type': 'application/json',
...(token ? { Authorization: `Bearer ${token}` } : {}),
...options?.headers,
};
const res = await fetch(`${BASE}${path}`, {
...options,
headers,
});
if (!res.ok) {
if (res.status === 401) {
localStorage.removeItem('adminToken');
window.dispatchEvent(new Event('unauthorized'));
}
const body = await res.json().catch(() => ({ error: { message: res.statusText } }));
throw new Error(body.error?.message ?? `HTTP ${res.status}`);
}
return res.json();
}