From a65af7f0118a5609acff65fb0ef32c0ed7872e90 Mon Sep 17 00:00:00 2001
From: PxlLoewe <72106766+PxlLoewe@users.noreply.github.com>
Date: Thu, 15 Jan 2026 14:09:47 +0100
Subject: [PATCH] Ealisitische Sequenz im HEader vom call-Bildschirm im MRT
---
.../pilot/_components/mrt/MrtDisplay.tsx | 87 +++++++++++++++++-
.../(app)/pilot/_components/mrt/MrtPopups.tsx | 29 ++++--
.../_components/mrt/images/PAGE_Call.png | Bin 4472578 -> 4472067 bytes
apps/dispatch/app/(app)/pilot/page.tsx | 4 +-
.../customToasts/StationStatusToast.tsx | 4 +-
.../app/_components/map/AircraftMarker.tsx | 2 +-
apps/dispatch/app/_store/pilot/MrtStore.ts | 2 +
.../app/_store/pilot/connectionStore.ts | 2 +-
8 files changed, 113 insertions(+), 17 deletions(-)
diff --git a/apps/dispatch/app/(app)/pilot/_components/mrt/MrtDisplay.tsx b/apps/dispatch/app/(app)/pilot/_components/mrt/MrtDisplay.tsx
index 4aa230d5..9a7b23f8 100644
--- a/apps/dispatch/app/(app)/pilot/_components/mrt/MrtDisplay.tsx
+++ b/apps/dispatch/app/(app)/pilot/_components/mrt/MrtDisplay.tsx
@@ -6,7 +6,7 @@ import PAGE_HOME from "./images/PAGE_Home.png";
import PAGE_Call from "./images/PAGE_Call.png";
import PAGE_Off from "./images/PAGE_Off.png";
import PAGE_STARTUP from "./images/PAGE_Startup.png";
-import { useEffect, useState } from "react";
+import { useEffect, useRef, useState } from "react";
import { cn, useDebounce } from "@repo/shared-components";
import "./MrtDisplay.css";
import { useSession } from "next-auth/react";
@@ -16,8 +16,11 @@ import { useAudioStore } from "_store/audioStore";
import { ROOMS } from "_data/livekitRooms";
export const MrtDisplay = () => {
- const { page, setPage, popup } = useMrtStore((state) => state);
-
+ const { page, setPage, popup, setPopup, setStringifiedData, stringifiedData } = useMrtStore(
+ (state) => state,
+ );
+ const callEstablishedRef = useRef(false);
+ const session = useSession();
const { connectedAircraft, selectedStation } = usePilotConnectionStore((state) => state);
const { room, speakingParticipants, isTalking } = useAudioStore((state) => state);
const [pageImage, setPageImage] = useState<{
@@ -35,8 +38,6 @@ export const MrtDisplay = () => {
| undefined
>(undefined);
- const session = useSession();
-
useDebounce(
() => {
if (!nextImage) return;
@@ -68,6 +69,18 @@ export const MrtDisplay = () => {
[page, setPage],
);
+ useDebounce(
+ () => {
+ if (page === "startup") {
+ setPopup({
+ popup: "login",
+ });
+ }
+ },
+ 7500,
+ [page, setPage],
+ );
+
useDebounce(
() => {
if (page === "voice-call" && speakingParticipants.length === 0 && !isTalking) {
@@ -81,6 +94,67 @@ export const MrtDisplay = () => {
);
useEffect(() => {
+ const timeouts: NodeJS.Timeout[] = [];
+ if (page === "voice-call") {
+ setStringifiedData({
+ callTextHeader: "Wählen",
+ });
+ timeouts.push(
+ setTimeout(() => {
+ setStringifiedData({
+ callTextHeader: "Anruf...",
+ });
+ }, 500),
+
+ setTimeout(() => {
+ setStringifiedData({
+ callTextHeader: "Gruppenruf",
+ });
+ }, 800),
+ setTimeout(() => {
+ callEstablishedRef.current = true;
+ }, 1500),
+ );
+ }
+ return () => {
+ timeouts.forEach((t) => clearTimeout(t));
+ };
+ }, [page, setStringifiedData]);
+
+ useDebounce(
+ () => {
+ if (isTalking && page === "voice-call") {
+ setStringifiedData({
+ callTextHeader: "Sprechen",
+ });
+ }
+ },
+ 1500,
+ [page, isTalking],
+ );
+
+ useEffect(() => {
+ if (isTalking && page === "voice-call" && callEstablishedRef.current) {
+ console.log("SET TO SPRECHEN", stringifiedData.callTextHeader);
+ setStringifiedData({
+ callTextHeader: "Sprechen",
+ });
+ } else if (
+ !isTalking &&
+ page === "voice-call" &&
+ stringifiedData.callTextHeader === "Sprechen"
+ ) {
+ setStringifiedData({
+ callTextHeader: "Gruppenruf",
+ });
+ }
+ }, [page, stringifiedData.callTextHeader, isTalking, setStringifiedData]);
+
+ useEffect(() => {
+ if (page !== "voice-call") {
+ callEstablishedRef.current = false;
+ }
+
switch (page) {
case "home":
setNextImage({ src: PAGE_HOME, name: "home" });
@@ -139,6 +213,9 @@ export const MrtDisplay = () => {
)}
{pageName == "voice-call" && (
+
+ {stringifiedData.callTextHeader}
+
{isTalking && selectedStation?.bosCallsignShort}
{speakingParticipants.length > 0 &&
diff --git a/apps/dispatch/app/(app)/pilot/_components/mrt/MrtPopups.tsx b/apps/dispatch/app/(app)/pilot/_components/mrt/MrtPopups.tsx
index 466c5825..2a7c5e70 100644
--- a/apps/dispatch/app/(app)/pilot/_components/mrt/MrtPopups.tsx
+++ b/apps/dispatch/app/(app)/pilot/_components/mrt/MrtPopups.tsx
@@ -16,7 +16,7 @@ export const MrtPopups = () => {
const { sdsReceivedSoundRef } = useSounds();
const { popup, setPopup, setStringifiedData, stringifiedData } = useMrtStore((state) => state);
- const { connectedAircraft } = usePilotConnectionStore((state) => state);
+ const { connectedAircraft, status } = usePilotConnectionStore((state) => state);
const [popupImage, setPopupImage] = useState(null);
useEffect(() => {
@@ -42,22 +42,39 @@ export const MrtPopups = () => {
useDebounce(
() => {
- if (!popup || popup == "sds-received") return;
+ if (popup == "login") return;
+ if (popup == "sds-received") return;
setPopup(null);
},
3000,
[popup],
);
+ useEffect(() => {
+ if (status === "connecting") {
+ setPopup({ popup: "login" });
+ }
+ }, [status, setPopup]);
+
+ useDebounce(
+ () => {
+ if (status === "connected") {
+ setPopup(null);
+ }
+ },
+ 5000,
+ [status],
+ );
+
useEffect(() => {
pilotSocket.on("sds-status", (data: StationStatus) => {
setStringifiedData({ sdsText: data.status + " - " + fmsStatusDescriptionShort[data.status] });
setPopup({ popup: "sds-received" });
+ if (sdsReceivedSoundRef.current) {
+ sdsReceivedSoundRef.current.currentTime = 0;
+ sdsReceivedSoundRef.current.play();
+ }
});
- if (sdsReceivedSoundRef.current) {
- sdsReceivedSoundRef.current.currentTime = 0;
- sdsReceivedSoundRef.current.play();
- }
}, [setPopup, setStringifiedData, sdsReceivedSoundRef]);
if (!popupImage || !popup) return null;
diff --git a/apps/dispatch/app/(app)/pilot/_components/mrt/images/PAGE_Call.png b/apps/dispatch/app/(app)/pilot/_components/mrt/images/PAGE_Call.png
index 6899505132f8464b61194f280ead307f2a68d2a5..956f29868a7473410320827a65c662a76ba88f94 100644
GIT binary patch
delta 6924
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
delta 17945
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 import("_components/map/Map"), {
});
const PilotPage = () => {
- const { connectedAircraft, status, } = usePilotConnectionStore((state) => state);
+ 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({
@@ -94,7 +94,7 @@ const PilotPage = () => {
-
+
MRT & DME
diff --git a/apps/dispatch/app/_components/customToasts/StationStatusToast.tsx b/apps/dispatch/app/_components/customToasts/StationStatusToast.tsx
index ec73555d..a3d3b64a 100644
--- a/apps/dispatch/app/_components/customToasts/StationStatusToast.tsx
+++ b/apps/dispatch/app/_components/customToasts/StationStatusToast.tsx
@@ -1,8 +1,8 @@
-import { getPublicUser, MissionSdsStatusLog, Prisma, StationStatus } from "@repo/db";
+import { getPublicUser, MissionSdsStatusLog, StationStatus } from "@repo/db";
import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
import { BaseNotification } from "_components/customToasts/BaseNotification";
import { FMS_STATUS_COLORS } from "_helpers/fmsStatusColors";
-import { editConnectedAircraftAPI, getConnectedAircraftsAPI } from "_querys/aircrafts";
+import { getConnectedAircraftsAPI } from "_querys/aircrafts";
import { getLivekitRooms } from "_querys/livekit";
import { sendSdsStatusMessageAPI } from "_querys/missions";
import { getStationsAPI } from "_querys/stations";
diff --git a/apps/dispatch/app/_components/map/AircraftMarker.tsx b/apps/dispatch/app/_components/map/AircraftMarker.tsx
index 445babda..3961690d 100644
--- a/apps/dispatch/app/_components/map/AircraftMarker.tsx
+++ b/apps/dispatch/app/_components/map/AircraftMarker.tsx
@@ -2,7 +2,7 @@ import { Marker, Polyline, useMap } from "react-leaflet";
import { DivIcon, Marker as LMarker, Popup as LPopup } from "leaflet";
import { useMapStore } from "_store/mapStore";
import { Fragment, useCallback, useEffect, useRef, useState, useMemo } from "react";
-import { checkSimulatorConnected, cn } from "@repo/shared-components";
+import { cn } from "@repo/shared-components";
import { ChevronsRightLeft, House, MessageSquareText, Minimize2 } from "lucide-react";
import { SmartPopup, calculateAnchor, useSmartPopup } from "_components/SmartPopup";
import FMSStatusHistory, {
diff --git a/apps/dispatch/app/_store/pilot/MrtStore.ts b/apps/dispatch/app/_store/pilot/MrtStore.ts
index 0bf9eaf1..a2a4525f 100644
--- a/apps/dispatch/app/_store/pilot/MrtStore.ts
+++ b/apps/dispatch/app/_store/pilot/MrtStore.ts
@@ -46,6 +46,8 @@ export type SetPopupParams =
interface StringifiedData {
sdsText?: string;
sentSdsText?: string;
+
+ callTextHeader?: string;
}
interface MrtStore {
diff --git a/apps/dispatch/app/_store/pilot/connectionStore.ts b/apps/dispatch/app/_store/pilot/connectionStore.ts
index 1976dd40..15e3109d 100644
--- a/apps/dispatch/app/_store/pilot/connectionStore.ts
+++ b/apps/dispatch/app/_store/pilot/connectionStore.ts
@@ -109,7 +109,7 @@ pilotSocket.on("connect-message", (data) => {
});
pilotSocket.on("disconnect", () => {
- usePilotConnectionStore.setState({ status: "disconnected" });
+ usePilotConnectionStore.setState({ status: "disconnected", connectedAircraft: null });
useAudioStore.getState().disconnect();
});