diff --git a/frontend/src/composables/useFlujoPrincipal.ts b/frontend/src/composables/useFlujoPrincipal.ts index b18750b..c804864 100644 --- a/frontend/src/composables/useFlujoPrincipal.ts +++ b/frontend/src/composables/useFlujoPrincipal.ts @@ -58,6 +58,12 @@ export const useFlujoPrincipal = () => { console.warn('SIBU | GPS falló o fue denegado'); } + // Guard contra race condition: si el usuario cerró el banner mientras cargaba + if (routeStore.selectedRouteId !== _ruta.id) { + console.log('SIBU | Carga abortada: La ruta ya no está seleccionada.'); + return; + } + let paradas: BusStop[] = []; if (paradasRes.status === 'fulfilled') { // Si loadRouteStops no devolviera los datos directamente, los tomamos del store @@ -87,6 +93,8 @@ export const useFlujoPrincipal = () => { } // ── PASO 4: Dibujar y Renderizar ── + if (routeStore.selectedRouteId !== _ruta.id) return; + // Dibujar ruta completa (fondo) await trazarRuta(paradasFormateadas, map, true); @@ -99,6 +107,8 @@ export const useFlujoPrincipal = () => { await encontrarParadaCercana(ubicacion, paradas, map) const paradaCercanaFound = paradaCercana.value + + if (routeStore.selectedRouteId !== _ruta.id) return; if (!paradaCercanaFound) return; // Dibujar tramo relevante