added MEasurement-tool, added Dispatch-name auto change
This commit is contained in:
@@ -7,8 +7,9 @@ import { toast } from "react-hot-toast";
|
||||
import { useLeftMenuStore } from "_store/leftMenuStore";
|
||||
import { asPublicUser } from "@repo/db";
|
||||
import { useQuery } from "@tanstack/react-query";
|
||||
import { getConnectedUserAPI } from "_querys/connected-user";
|
||||
import { getConnectedDispatcherAPI } from "_querys/dispatcher";
|
||||
import { sendReportAPI } from "_querys/report";
|
||||
import { getConnectedAircraftsAPI } from "_querys/aircrafts";
|
||||
|
||||
export const Report = () => {
|
||||
const { setChatOpen, setReportTabOpen, reportTabOpen, setOwnId } = useLeftMenuStore();
|
||||
@@ -22,15 +23,19 @@ export const Report = () => {
|
||||
setOwnId(session.data.user.id);
|
||||
}, [session, setOwnId]);
|
||||
|
||||
const { data: connectedUser } = useQuery({
|
||||
queryKey: ["connected-users"],
|
||||
queryFn: async () => {
|
||||
const user = await getConnectedUserAPI();
|
||||
return user.filter((u) => u.userId !== session.data?.user.id);
|
||||
},
|
||||
const { data: dispatcher } = useQuery({
|
||||
queryKey: ["dispatcher"],
|
||||
queryFn: () => getConnectedDispatcherAPI(),
|
||||
refetchInterval: 10000,
|
||||
refetchOnWindowFocus: true,
|
||||
});
|
||||
const { data: aircrafts } = useQuery({
|
||||
queryKey: ["aircrafts"],
|
||||
queryFn: () => getConnectedAircraftsAPI(),
|
||||
refetchInterval: 10000,
|
||||
});
|
||||
|
||||
const filteredDispatcher = dispatcher?.filter((d) => d.userId !== session.data?.user.id);
|
||||
const filteredAircrafts = aircrafts?.filter((a) => a.userId !== session.data?.user.id);
|
||||
|
||||
return (
|
||||
<div className={cn("dropdown dropdown-right", reportTabOpen && "dropdown-open")}>
|
||||
@@ -60,23 +65,27 @@ export const Report = () => {
|
||||
value={selectedPlayer}
|
||||
onChange={(e) => setSelectedPlayer(e.target.value)}
|
||||
>
|
||||
{!connectedUser?.length && (
|
||||
{!filteredDispatcher?.length && !filteredAircrafts?.length && (
|
||||
<option disabled value="default">
|
||||
Kein Nutzer verbunden
|
||||
Keine Nutzer gefunden
|
||||
</option>
|
||||
)}
|
||||
{connectedUser?.length && (
|
||||
<option disabled value="default">
|
||||
Kein Nutzer auswählen
|
||||
{filteredDispatcher?.length ||
|
||||
(filteredAircrafts?.length && (
|
||||
<option disabled value="default">
|
||||
Nutzer auswählen
|
||||
</option>
|
||||
))}
|
||||
|
||||
{filteredDispatcher?.map((dispatcher) => (
|
||||
<option key={dispatcher.userId} value={dispatcher.userId}>
|
||||
{dispatcher.zone} - {asPublicUser(dispatcher.publicUser).fullName}
|
||||
</option>
|
||||
)}
|
||||
{[
|
||||
...(connectedUser?.filter(
|
||||
(user, idx, arr) => arr.findIndex((u) => u.userId === user.userId) === idx,
|
||||
) || []),
|
||||
].map((user) => (
|
||||
<option key={user.userId} value={user.userId}>
|
||||
{asPublicUser(user.publicUser).fullName}
|
||||
))}
|
||||
{filteredAircrafts?.map((aircraft) => (
|
||||
<option key={aircraft.userId} value={aircraft.userId}>
|
||||
{aircraft.Station.bosCallsignShort} -{" "}
|
||||
{asPublicUser(aircraft.publicUser).fullName}
|
||||
</option>
|
||||
))}
|
||||
</select>
|
||||
|
||||
Reference in New Issue
Block a user