// Тонкая обёртка над fetch: подставляет JWT и разбирает JSON/ошибки.

const TOKEN_KEY = 'autoreply_token';

export function getToken() {
  return localStorage.getItem(TOKEN_KEY);
}

export function setToken(token) {
  if (token) localStorage.setItem(TOKEN_KEY, token);
  else localStorage.removeItem(TOKEN_KEY);
}

export async function api(path, { method = 'GET', body } = {}) {
  const headers = { 'Content-Type': 'application/json' };
  const token = getToken();
  if (token) headers.Authorization = `Bearer ${token}`;

  const res = await fetch(`/api${path}`, {
    method,
    headers,
    body: body ? JSON.stringify(body) : undefined,
  });

  let data = null;
  try {
    data = await res.json();
  } catch {
    // тело не JSON — оставляем null
  }

  if (!res.ok) {
    const message = data?.error || `Ошибка ${res.status}`;
    throw new Error(message);
  }
  return data;
}
