From 5ec26970bdf000ac381ea69456e8adf0d774620c Mon Sep 17 00:00:00 2001 From: Hanzo_dev <2002samudiojohan@gmail.com> Date: Wed, 4 Mar 2026 11:26:08 -0500 Subject: [PATCH] fix(map): add race-condition guards to prevent stops rendering after route is unselected --- frontend/src/composables/useFlujoPrincipal.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) 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