From dc92174798aa0f8c83dd356795cd434e8e996cdf Mon Sep 17 00:00:00 2001 From: PxlLoewe <72106766+PxlLoewe@users.noreply.github.com> Date: Fri, 27 Jun 2025 21:40:23 -0700 Subject: [PATCH] Simulator nicht verbunden warnung --- .../socket-events/connect-pilot.ts | 16 +++++--- .../_components/pannel/MissionForm.tsx | 2 +- .../pilot/_components/SimConnectionAlert.tsx | 39 +++++++++++++++++++ .../navbar/_components/Connection.tsx | 19 +++++++++ apps/dispatch/app/(app)/pilot/page.tsx | 21 +++++++++- .../app/_components/map/AircraftMarker.tsx | 2 +- .../app/_components/map/MissionMarkers.tsx | 2 +- .../map/_components/MarkerCluster.tsx | 2 +- .../map/_components/MissionMarkerTabs.tsx | 2 +- apps/dispatch/app/_querys/aircrafts.ts | 10 +++++ .../app/_store/pilot/connectionStore.ts | 10 +++-- apps/dispatch/app/api/aircrafts/route.ts | 5 ++- 12 files changed, 114 insertions(+), 16 deletions(-) create mode 100644 apps/dispatch/app/(app)/pilot/_components/SimConnectionAlert.tsx diff --git a/apps/dispatch-server/socket-events/connect-pilot.ts b/apps/dispatch-server/socket-events/connect-pilot.ts index 6e969142..2aacc23a 100644 --- a/apps/dispatch-server/socket-events/connect-pilot.ts +++ b/apps/dispatch-server/socket-events/connect-pilot.ts @@ -5,7 +5,15 @@ import { Server, Socket } from "socket.io"; export const handleConnectPilot = (socket: Socket, io: Server) => - async ({ logoffTime, stationId }: { logoffTime: string; stationId: string }) => { + async ({ + logoffTime, + stationId, + debug, + }: { + logoffTime: string; + stationId: string; + debug: boolean; + }) => { try { if (!stationId) return Error("Station ID is required"); const user: User = socket.data.user; // User ID aus dem JWT-Token @@ -78,8 +86,7 @@ export const handleConnectPilot = return { lat, lng }; } - const randomPos = - process.env.environment === "development" ? getRandomGermanPosition() : undefined; + const randomPos = debug ? getRandomGermanPosition() : undefined; const connectedAircraftEntry = await prisma.connectedAircraft.create({ data: { @@ -87,8 +94,7 @@ export const handleConnectPilot = esimatedLogoutTime: parsedLogoffDate?.toISOString() || null, userId: userId, stationId: parseInt(stationId), - lastHeartbeat: - process.env.environment === "development" ? nowPlus2h.toISOString() : undefined, + lastHeartbeat: debug ? nowPlus2h.toISOString() : undefined, posLat: randomPos?.lat, posLng: randomPos?.lng, }, diff --git a/apps/dispatch/app/(app)/dispatch/_components/pannel/MissionForm.tsx b/apps/dispatch/app/(app)/dispatch/_components/pannel/MissionForm.tsx index 34c3e734..97b2bfdc 100644 --- a/apps/dispatch/app/(app)/dispatch/_components/pannel/MissionForm.tsx +++ b/apps/dispatch/app/(app)/dispatch/_components/pannel/MissionForm.tsx @@ -41,7 +41,7 @@ export const MissionForm = () => { const { data: aircrafts } = useQuery({ queryKey: ["aircrafts"], - queryFn: getConnectedAircraftsAPI, + queryFn: () => getConnectedAircraftsAPI(), refetchInterval: 10000, }); diff --git a/apps/dispatch/app/(app)/pilot/_components/SimConnectionAlert.tsx b/apps/dispatch/app/(app)/pilot/_components/SimConnectionAlert.tsx new file mode 100644 index 00000000..644dc651 --- /dev/null +++ b/apps/dispatch/app/(app)/pilot/_components/SimConnectionAlert.tsx @@ -0,0 +1,39 @@ +import { usePilotConnectionStore } from "_store/pilot/connectionStore"; +import { AlertTriangle } from "lucide-react"; +import { useEffect, useState } from "react"; + +export const SimConnectionAlert = ({ lastUpdated }: { lastUpdated?: Date }) => { + const [lastHearbeetSeconds, setLastHearbeetSeconds] = useState(0); + const { disconnect } = usePilotConnectionStore((state) => state); + useEffect(() => { + const interval = setInterval(() => { + if (lastUpdated) { + const now = new Date(); + const diff = Math.floor((now.getTime() - new Date(lastUpdated).getTime()) / 1000); + setLastHearbeetSeconds(diff); + } else { + setLastHearbeetSeconds(0); + } + }, 1000); + + return () => clearInterval(interval); + }, [lastUpdated]); + + return ( +
Du kannst diese Zeit später noch anpassen.
)} + + {session.data?.user.permissions.includes("ADMIN_STATION") && ( + + )}