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") && ( + + )}