/** * 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';