fix(map): add race-condition guards to prevent stops rendering after route is unselected
This commit is contained in:
@ -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
|
||||
|
||||
Reference in New Issue
Block a user