import { API_BASE_URL } from "@/lib/api";

/**
 * Logout — invalidate basic_auth cache + reload.
 *
 * Logout flow — basic_auth quirk:
 *   1. Отправляем fetch с заведомо неправильными Basic creds → 401 от Caddy
 *      → браузер забывает cached creds для этого origin.
 *   2. Hard reload (`window.location.href = "/"`) — basic_auth prompt
 *      покажется заново.
 *
 * При basePath=/trade-in мы должны бить именно по защищённому пути
 * (`/trade-in/api/v1/me`), иначе Caddy не вытолкнет cached creds для текущего
 * scope. После 401 — hard reload на корень сайта (`/`), там basic_auth
 * prompt появится заново.
 */
export async function logout(): Promise<void> {
  // Используем `API_BASE_URL` (тот же который `apiFetchWithStatus` для /me) —
  // single source of truth. В проде `API_BASE_URL` = `/trade-in` (через
  // `NEXT_PUBLIC_API_BASE_URL` или `NEXT_PUBLIC_BASE_PATH` fallback); в dev "".
  try {
    await fetch(`${API_BASE_URL}/api/v1/me`, {
      headers: {
        Authorization: "Basic " + btoa("logout:logout"),
      },
      cache: "no-store",
    });
  } catch {
    // Сетевая ошибка — всё равно делаем hard reload.
  }
  // Hard reload форсит новый basic_auth handshake. Уходим в корень сайта,
  // чтобы prompt не залип в /trade-in scope.
  window.location.href = "/";
}
