"use client"; import { Mrt } from "(app)/pilot/_components/mrt/Mrt"; import { Chat } from "../../_components/left/Chat"; import { Report } from "../../_components/left/Report"; import { Dme } from "(app)/pilot/_components/dme/Dme"; import dynamic from "next/dynamic"; import { ConnectedDispatcher } from "tracker/_components/ConnectedDispatcher"; import { useMutation, useQuery } from "@tanstack/react-query"; import { usePilotConnectionStore } from "_store/pilot/connectionStore"; import { getConnectedAircraftsAPI } from "_querys/aircrafts"; import { Button, checkSimulatorConnected, useDebounce } from "@repo/shared-components"; import { SimConnectionAlert } from "(app)/pilot/_components/SimConnectionAlert"; import { SettingsBoard } from "_components/left/SettingsBoard"; import { BugReport } from "_components/left/BugReport"; import { useEffect, useState } from "react"; import { useDmeStore } from "_store/pilot/dmeStore"; import { sendMissionAPI } from "_querys/missions"; import toast from "react-hot-toast"; const Map = dynamic(() => import("_components/map/Map"), { ssr: false, }); const PilotPage = () => { const { connectedAircraft, status } = usePilotConnectionStore((state) => state); const { latestMission } = useDmeStore((state) => state); // Query will be cached anyway, due to this, displayed Markers are in sync with own Aircraft connection-warning const { data: aircrafts } = useQuery({ queryKey: ["aircrafts"], queryFn: () => getConnectedAircraftsAPI(), refetchInterval: 10_000, }); const sendAlertMutation = useMutation({ mutationKey: ["missions"], mutationFn: (params: { id: number; stationId?: number | undefined; vehicleName?: "RTW" | "POL" | "FW" | undefined; desktopOnly?: boolean | undefined; }) => sendMissionAPI(params.id, params), onError: (error) => { console.error(error); toast.error("Fehler beim Alarmieren"); }, onSuccess: (data) => { toast.success(data.message); }, }); const [shortlyConnected, setShortlyConnected] = useState(false); useDebounce( () => { if (status === "connected") { setShortlyConnected(false); } }, 30_000, [status], ); useEffect(() => { if (status === "connected") { setShortlyConnected(true); } }, [status]); const ownAircraft = aircrafts?.find((aircraft) => aircraft.id === connectedAircraft?.id); const simulatorConnected = ownAircraft ? checkSimulatorConnected(ownAircraft) : false; return (