Neues MRt eingefügt. Status 059 sind nun keine FMS status mehr
This commit is contained in:
@@ -1,14 +1,16 @@
|
||||
import { Prisma, StationStatus } from "@repo/db";
|
||||
import { getPublicUser, MissionSdsStatusLog, Prisma, 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 { getLivekitRooms } from "_querys/livekit";
|
||||
import { sendSdsStatusMessageAPI } from "_querys/missions";
|
||||
import { getStationsAPI } from "_querys/stations";
|
||||
import { useAudioStore } from "_store/audioStore";
|
||||
import { useMapStore } from "_store/mapStore";
|
||||
import { X } from "lucide-react";
|
||||
import { useEffect, useRef, useState } from "react";
|
||||
import { useSession } from "next-auth/react";
|
||||
import { useEffect, useRef } from "react";
|
||||
import { Toast, toast } from "react-hot-toast";
|
||||
|
||||
export const QUICK_RESPONSE: Record<string, string[]> = {
|
||||
@@ -22,6 +24,8 @@ export const StatusToast = ({ event, t }: { event: StationStatus; t: Toast }) =>
|
||||
const status5Sounds = useRef<HTMLAudioElement | null>(null);
|
||||
const status9Sounds = useRef<HTMLAudioElement | null>(null);
|
||||
|
||||
const session = useSession();
|
||||
|
||||
const { data: livekitRooms } = useQuery({
|
||||
queryKey: ["livekit-rooms"],
|
||||
queryFn: () => getLivekitRooms(),
|
||||
@@ -46,7 +50,7 @@ export const StatusToast = ({ event, t }: { event: StationStatus; t: Toast }) =>
|
||||
status9Sounds.current = new Audio("/sounds/status-9.mp3");
|
||||
}
|
||||
}, []);
|
||||
const [aircraftDataAcurate, setAircraftDataAccurate] = useState(false);
|
||||
|
||||
//const mapStore = useMapStore((s) => s);
|
||||
const { setOpenAircraftMarker, setMap } = useMapStore((store) => store);
|
||||
|
||||
@@ -65,29 +69,16 @@ export const StatusToast = ({ event, t }: { event: StationStatus; t: Toast }) =>
|
||||
const station = stations?.find((s) => s.id === event.data?.stationId);
|
||||
|
||||
const queryClient = useQueryClient();
|
||||
const changeAircraftMutation = useMutation({
|
||||
mutationFn: async ({
|
||||
id,
|
||||
update,
|
||||
}: {
|
||||
id: number;
|
||||
update: Prisma.ConnectedAircraftUpdateInput;
|
||||
}) => {
|
||||
await editConnectedAircraftAPI(id, update);
|
||||
const sendSdsStatusMutation = useMutation({
|
||||
mutationFn: async ({ sdsMessage }: { sdsMessage: MissionSdsStatusLog }) => {
|
||||
if (!connectedAircraft?.id) throw new Error("No connected aircraft");
|
||||
await sendSdsStatusMessageAPI({ sdsMessage, aircraftId: connectedAircraft?.id });
|
||||
queryClient.invalidateQueries({
|
||||
queryKey: ["aircrafts"],
|
||||
queryKey: ["missions"],
|
||||
});
|
||||
},
|
||||
});
|
||||
|
||||
useEffect(() => {
|
||||
if (event.status !== connectedAircraft?.fmsStatus && aircraftDataAcurate) {
|
||||
toast.remove(t.id);
|
||||
} else if (event.status == connectedAircraft?.fmsStatus && !aircraftDataAcurate) {
|
||||
setAircraftDataAccurate(true);
|
||||
}
|
||||
}, [aircraftDataAcurate, connectedAircraft, event.status, t.id]);
|
||||
|
||||
useEffect(() => {
|
||||
let soundRef: React.RefObject<HTMLAudioElement | null> | null = null;
|
||||
switch (event.status) {
|
||||
@@ -103,7 +94,8 @@ export const StatusToast = ({ event, t }: { event: StationStatus; t: Toast }) =>
|
||||
default:
|
||||
soundRef = null;
|
||||
}
|
||||
if (audioRoom !== livekitUser?.roomName) {
|
||||
|
||||
if (audioRoom && livekitUser?.roomName && audioRoom !== livekitUser?.roomName) {
|
||||
toast.remove(t.id);
|
||||
return;
|
||||
}
|
||||
@@ -121,7 +113,8 @@ export const StatusToast = ({ event, t }: { event: StationStatus; t: Toast }) =>
|
||||
};
|
||||
}, [event.status, livekitUser?.roomName, audioRoom, t.id]);
|
||||
|
||||
if (!connectedAircraft || !station) return null;
|
||||
console.log(connectedAircraft, station);
|
||||
if (!connectedAircraft || !station || !session.data) return null;
|
||||
return (
|
||||
<BaseNotification>
|
||||
<div className="flex flex-row items-center gap-14">
|
||||
@@ -162,10 +155,18 @@ export const StatusToast = ({ event, t }: { event: StationStatus; t: Toast }) =>
|
||||
toast.error("Keine Flugzeug-ID gefunden");
|
||||
return;
|
||||
}
|
||||
await changeAircraftMutation.mutateAsync({
|
||||
id: event.data?.aircraftId,
|
||||
update: {
|
||||
fmsStatus: status,
|
||||
await sendSdsStatusMutation.mutateAsync({
|
||||
sdsMessage: {
|
||||
type: "sds-status-log",
|
||||
auto: false,
|
||||
data: {
|
||||
direction: "to-aircraft",
|
||||
stationId: event.data.stationId!,
|
||||
station: station,
|
||||
user: getPublicUser(session.data?.user),
|
||||
status,
|
||||
},
|
||||
timeStamp: new Date().toISOString(),
|
||||
},
|
||||
});
|
||||
toast.remove(t.id);
|
||||
|
||||
Reference in New Issue
Block a user