From f52f870eed7323ed9b9f5906cdd06623a969c416 Mon Sep 17 00:00:00 2001 From: nocnico Date: Wed, 21 May 2025 18:53:44 +0200 Subject: [PATCH] . --- .../map/_components/MarkerCluster.tsx | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/apps/dispatch/app/dispatch/_components/map/_components/MarkerCluster.tsx b/apps/dispatch/app/dispatch/_components/map/_components/MarkerCluster.tsx index 144f304f..f65ea35f 100644 --- a/apps/dispatch/app/dispatch/_components/map/_components/MarkerCluster.tsx +++ b/apps/dispatch/app/dispatch/_components/map/_components/MarkerCluster.tsx @@ -1,6 +1,7 @@ import { ConnectedAircraft, Mission, Station } from "@repo/db"; import { useQuery } from "@tanstack/react-query"; import { SmartPopup, useSmartPopup } from "_components/SmartPopup"; +import { useDispatchConnectionStore } from "_store/dispatch/connectionStore"; import { useMapStore } from "_store/mapStore"; import { FMS_STATUS_COLORS, @@ -14,7 +15,7 @@ import { cn } from "helpers/cn"; import { checkSimulatorConnected } from "helpers/simulatorConnected"; import { getConnectedAircraftsAPI } from "querys/aircrafts"; import { getMissionsAPI } from "querys/missions"; -import { useEffect, useState } from "react"; +import { useEffect, useMemo, useState } from "react"; import { useMap } from "react-leaflet"; const PopupContent = ({ @@ -149,13 +150,23 @@ export const MarkerCluster = () => { queryFn: getConnectedAircraftsAPI, }); - const { data: missions } = useQuery({ + const dispatcherConnected = + useDispatchConnectionStore((s) => s.status) === "connected"; + const { data: missions = [] } = useQuery({ queryKey: ["missions"], queryFn: () => getMissionsAPI({ OR: [{ state: "draft" }, { state: "running" }], }), }); + + const filteredMissions = useMemo(() => { + if (!dispatcherConnected) { + return missions.filter((m: Mission) => m.state === "running"); + } + return missions; + }, [missions, dispatcherConnected]); + const [cluster, setCluster] = useState< { aircrafts: (ConnectedAircraft & { Station: Station })[]; @@ -201,7 +212,7 @@ export const MarkerCluster = () => { ]; } }); - missions?.forEach((mission) => { + filteredMissions?.forEach((mission) => { const lat = mission.addressLat; const lng = mission.addressLng; const existingClusterIndex = newCluster.findIndex( @@ -262,7 +273,7 @@ export const MarkerCluster = () => { return () => { map.off("zoomend", handleZoom); }; - }, [map, aircrafts, missions]); + }, [map, aircrafts, missions, filteredMissions]); return ( <> {cluster.map((c, i) => (