Auditoría de exports sin uso: - Eliminados: getPhases, getLayers, getTemplate, countRows (repositories), setCursor (redundante: applyBundle escribe el cursor por SQL), y la constante TOKEN_ABILITY (config). getPhases/getTemplate quedaron huérfanos al quitar la pestaña Fases y cambiar el selector de plantillas. - purgeSentOperations existía pero NADIE la llamaba (el outbox acumulaba filas 'sent' sin límite): ahora runSync la invoca al final del ciclo. Sin mocks, TODOs ni simulaciones en el código. Typecheck limpio. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
57 lines
1.8 KiB
TypeScript
57 lines
1.8 KiB
TypeScript
/**
|
|
* 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';
|