Soma / frontend /src /api.js
Komalpreet Kaur
refactor: optimize auth flow and improve API error handling
7c00f2a unverified
raw
history blame contribute delete
694 Bytes
/**
* Authenticated fetch wrapper.
* Reads the JWT from localStorage and attaches it as a Bearer token
* on every request. Auto-clears credentials on 401 (expired/invalid token).
*/
export async function apiFetch(url, options = {}) {
const token = localStorage.getItem('soma_token');
const res = await fetch(url, {
...options,
headers: {
'Content-Type': 'application/json',
...(token ? { Authorization: `Bearer ${token}` } : {}),
...options.headers,
},
});
if (res.status === 401) {
localStorage.removeItem('soma_token');
localStorage.removeItem('soma_username');
window.dispatchEvent(new Event('soma-auth-expired'));
}
return res;
}