diff --git a/frontend/src/stores/route.ts b/frontend/src/stores/route.ts index 5c366f1..463bc10 100644 --- a/frontend/src/stores/route.ts +++ b/frontend/src/stores/route.ts @@ -12,6 +12,7 @@ export const useRouteStore = defineStore('route', () => { const isLoadingRoutes = ref(false) const isLoadingStops = ref(false) const error = ref(null) + const wasSelectedFromMap = ref(false) const lastFetched = ref(0) // ⚡ CACHÉ ESTÁTICO RUTAS const stopsCache = ref>(new Map()) // ⚡ CACHÉ ESTÁTICO PARADAS @@ -78,6 +79,7 @@ export const useRouteStore = defineStore('route', () => { selectedRouteId.value = null selectedRouteName.value = null selectedRouteStops.value = [] + wasSelectedFromMap.value = false } return { @@ -88,6 +90,7 @@ export const useRouteStore = defineStore('route', () => { isLoadingRoutes, isLoadingStops, error, + wasSelectedFromMap, hasSelectedRoute, loadRoutes, loadRouteStops, diff --git a/frontend/src/views/MapView.vue b/frontend/src/views/MapView.vue index c8e1a88..f4ccc71 100644 --- a/frontend/src/views/MapView.vue +++ b/frontend/src/views/MapView.vue @@ -47,7 +47,6 @@ const unitFetchInterval = ref(null); const userCoords = ref<{ lat: number; lng: number } | null>(null); const optimalStopPulse = ref(null); const showRouteDropdown = ref(false); -const wasSelectedFromMap = ref(false); const isInternalSelection = ref(false); const alturaNavbar = ref(64); @@ -238,7 +237,7 @@ async function initializeMap() { } // If we have a selected route AND it was from map, show its stops - if (routeStore.selectedRouteId && routeStore.selectedRouteStops.length > 0 && wasSelectedFromMap.value) { + if (routeStore.selectedRouteId && routeStore.selectedRouteStops.length > 0 && routeStore.wasSelectedFromMap) { updateMapMarkers(); } else { // If no route or not from map, ensure it's clean (promos stay though) @@ -265,7 +264,7 @@ watch( // Si la selección no viene de dentro de MapView (selectRouteAndClose), // reseteamos el flag de origen Mapa para que el buscador no se "fije" if (!isInternalSelection.value) { - wasSelectedFromMap.value = false; + routeStore.wasSelectedFromMap = false; } // ALWAYS clear markers first when route changes - do this immediately @@ -279,7 +278,7 @@ watch( } if (routeId) { - if (wasSelectedFromMap.value) { + if (routeStore.wasSelectedFromMap) { // Only update map visuals if selection came from the Map search flow await updateMapMarkers(true); } else { @@ -290,7 +289,7 @@ watch( } else { // Clear markers when no route is selected lastProcessedRouteId.value = null; - wasSelectedFromMap.value = false; // Reset selection origin + routeStore.wasSelectedFromMap = false; // Reset selection origin clearMapMarkers(); } }, @@ -409,7 +408,7 @@ async function updatePromoMarkers() { async function selectRouteAndClose(routeId: string, routeName: string) { console.log(`🤖 JARVIS: Iniciando viaje hacia ${routeName}`); isInternalSelection.value = true; - wasSelectedFromMap.value = true; + routeStore.wasSelectedFromMap = true; await routeStore.selectRoute(routeId, routeName); showRouteDropdown.value = false; showUberSearch.value = false; // Close the expanded search panel @@ -631,12 +630,12 @@ async function highlightOptimalStopForRoute() { -
+