/**
 * Configuración de la app.
 *
 * La dirección del servidor es CONFIGURABLE en runtime (campo en el login,
 * persistida por la sesión). DEFAULT_SERVER es solo el valor inicial.
 * Ojo: desde un dispositivo físico/emulador "localhost" NO es la máquina de
 * desarrollo:
 *   - Emulador Android: `http://10.0.2.2/...`
 *   - Dispositivo físico: la IP LAN del PC, p.ej. `http://192.168.1.50/...`
 */

export const DEFAULT_SERVER = 'http://10.0.2.2/construprogress/public';

/** Raíz del host vigente (media relativa, p.ej. `/storage/...`, se resuelve contra ella). */
let serverOrigin = DEFAULT_SERVER;

/**
 * Normaliza lo que teclea el usuario a una raíz de servidor:
 * añade `http://` si falta el esquema, quita barras finales y el sufijo
 * `/api/v1` si lo incluyó.
 */
export function normalizeServerUrl(input: string): string {
  let url = input.trim();
  if (!url) return DEFAULT_SERVER;
  if (!/^https?:\/\//i.test(url)) url = `http://${url}`;
  url = url.replace(/\/+$/, '');
  url = url.replace(/\/api\/v1$/i, '');
  return url;
}

/** Fija la raíz del servidor para todas las peticiones siguientes. */
export function setServerOrigin(url: string): void {
  serverOrigin = normalizeServerUrl(url);
}

export function getServerOrigin(): string {
  return serverOrigin;
}

/** Raíz de la API v1 vigente. */
export function getBaseUrl(): string {
  return `${serverOrigin}/api/v1`;
}

/** Convierte una url de media (posiblemente relativa) en absoluta. */
export function absoluteUrl(url?: string | null): string | undefined {
  if (!url) return undefined;
  if (/^https?:\/\//i.test(url)) return url;
  return `${serverOrigin}${url.startsWith('/') ? '' : '/'}${url}`;
}

/** Se envía en cada petición como cabecera X-App-Version (ver protocolo §7). */
export const APP_VERSION = '1.0.0';

/** Nombre de la BD SQLite local. */
export const DB_NAME = 'avante.db';
