fix(eta): show schedules even if location is still loading

This commit is contained in:
2026-03-02 15:49:50 -05:00
parent e3f01c665a
commit 5559578561

View File

@ -71,11 +71,10 @@ export function useETA() {
return; return;
} }
// Si no tenemos parada aún, no podemos calcular ETA real, pero sabemos que SÍ hay buses.
// Mantenemos el estado 'cargando' hasta que llegue la parada.
if (!parada_cercana) return;
// PASO 2: Obtener detalles de la ruta y todas sus paradas para calcular distancia // PASO 2: Obtener detalles de la ruta y todas sus paradas para calcular distancia
let minutosHastaParada = 0;
if (parada_cercana) {
const [routeRes, stopsRes] = await Promise.all([ const [routeRes, stopsRes] = await Promise.all([
supabase supabase
.from('routes') .from('routes')
@ -89,16 +88,12 @@ export function useETA() {
.order('stop_order', { ascending: true }) .order('stop_order', { ascending: true })
]); ]);
if (routeRes.error || !stopsRes.data) throw new Error('Error al cargar datos de ruta'); if (!routeRes.error && stopsRes.data) {
const routeData = routeRes.data; const routeData = routeRes.data;
const routeStops = stopsRes.data; const routeStops = stopsRes.data;
// Encontrar el orden de la parada donde está el usuario
const targetStopIndex = routeStops.findIndex(s => s.stop_id === parada_cercana.id); const targetStopIndex = routeStops.findIndex(s => s.stop_id === parada_cercana.id);
if (targetStopIndex === -1) return;
// CALCULAR DISTANCIA ACUMULADA if (targetStopIndex !== -1) {
let distanciaAcumuladaKm = 0; let distanciaAcumuladaKm = 0;
for (let i = 0; i < targetStopIndex; i++) { for (let i = 0; i < targetStopIndex; i++) {
const stopA = routeStops[i]; const stopA = routeStops[i];
@ -110,13 +105,15 @@ export function useETA() {
distanciaAcumuladaKm += getDistanceKm(start.latitude, start.longitude, end.latitude, end.longitude); distanciaAcumuladaKm += getDistanceKm(start.latitude, start.longitude, end.latitude, end.longitude);
} }
} }
distanciaAcumuladaKm *= 1.2; distanciaAcumuladaKm *= 1.2;
const velocidad = routeData.average_speed_kmh || VELOCIDAD_PROMEDIO_KMH; const velocidad = routeData.average_speed_kmh || VELOCIDAD_PROMEDIO_KMH;
const tiempoViajeMinutos = (distanciaAcumuladaKm / velocidad) * 60; const tiempoViajeMinutos = (distanciaAcumuladaKm / velocidad) * 60;
const numeroParadas = targetStopIndex; const numeroParadas = targetStopIndex;
const tiempoParadasMinutos = (numeroParadas * TIEMPO_PARADA_SEGUNDOS) / 60; const tiempoParadasMinutos = (numeroParadas * TIEMPO_PARADA_SEGUNDOS) / 60;
const minutosHastaParada = tiempoViajeMinutos + tiempoParadasMinutos; minutosHastaParada = tiempoViajeMinutos + tiempoParadasMinutos;
}
}
}
// PASO 3: Calcular ETA para cada salida // PASO 3: Calcular ETA para cada salida
const ahora = new Date(); const ahora = new Date();