Dispo-Option, die HPG validierung nicht zu nutzen
This commit is contained in:
@@ -3,16 +3,17 @@ import { useEffect, useRef, useState } from "react";
|
||||
import { GearIcon } from "@radix-ui/react-icons";
|
||||
import { SettingsIcon, Volume2 } from "lucide-react";
|
||||
import MicVolumeBar from "_components/MicVolumeIndication";
|
||||
import { useMutation, useQuery } from "@tanstack/react-query";
|
||||
import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
|
||||
import { editUserAPI, getUserAPI } from "_querys/user";
|
||||
import { useSession } from "next-auth/react";
|
||||
import { useAudioStore } from "_store/audioStore";
|
||||
import toast from "react-hot-toast";
|
||||
import { useMapStore } from "_store/mapStore";
|
||||
import { set } from "date-fns";
|
||||
import { Button } from "@repo/shared-components";
|
||||
|
||||
export const SettingsBtn = () => {
|
||||
const session = useSession();
|
||||
const queryClient = useQueryClient();
|
||||
|
||||
const [inputDevices, setInputDevices] = useState<MediaDeviceInfo[]>([]);
|
||||
const { data: user } = useQuery({
|
||||
@@ -23,6 +24,10 @@ export const SettingsBtn = () => {
|
||||
|
||||
const editUserMutation = useMutation({
|
||||
mutationFn: editUserAPI,
|
||||
onSuccess: async () => {
|
||||
await queryClient.invalidateQueries({ queryKey: ["user", session.data?.user.id] });
|
||||
},
|
||||
|
||||
});
|
||||
|
||||
useEffect(() => {
|
||||
@@ -40,6 +45,7 @@ export const SettingsBtn = () => {
|
||||
micVolume: user?.settingsMicVolume || 1,
|
||||
radioVolume: user?.settingsRadioVolume || 0.8,
|
||||
autoCloseMapPopup: user?.settingsAutoCloseMapPopup || false,
|
||||
useHPGAsDispatcher: user?.settingsUseHPGAsDispatcher || false,
|
||||
});
|
||||
|
||||
const { setSettings: setAudioSettings } = useAudioStore((state) => state);
|
||||
@@ -57,7 +63,8 @@ export const SettingsBtn = () => {
|
||||
micDeviceId: user.settingsMicDevice,
|
||||
micVolume: user.settingsMicVolume || 1,
|
||||
radioVolume: user.settingsRadioVolume || 0.8,
|
||||
autoCloseMapPopup: user.settingsAutoCloseMapPopup || false,
|
||||
autoCloseMapPopup: user.settingsAutoCloseMapPopup,
|
||||
useHPGAsDispatcher: user.settingsUseHPGAsDispatcher,
|
||||
});
|
||||
setUserSettings({
|
||||
settingsAutoCloseMapPopup: user.settingsAutoCloseMapPopup || false,
|
||||
@@ -198,6 +205,17 @@ export const SettingsBtn = () => {
|
||||
/>
|
||||
Popups automatisch schließen
|
||||
</div>
|
||||
<div className="mt-2 flex w-full items-center gap-2">
|
||||
<input
|
||||
type="checkbox"
|
||||
className="toggle"
|
||||
checked={settings.useHPGAsDispatcher}
|
||||
onChange={(e) => {
|
||||
setSettingsPartial({ useHPGAsDispatcher: e.target.checked });
|
||||
}}
|
||||
/>
|
||||
HPG als Disponent verwenden
|
||||
</div>
|
||||
|
||||
<div className="modal-action flex justify-between">
|
||||
<button
|
||||
@@ -211,7 +229,7 @@ export const SettingsBtn = () => {
|
||||
>
|
||||
Schließen
|
||||
</button>
|
||||
<button
|
||||
<Button
|
||||
className="btn btn-soft btn-success"
|
||||
type="submit"
|
||||
onSubmit={() => false}
|
||||
@@ -224,6 +242,7 @@ export const SettingsBtn = () => {
|
||||
settingsMicVolume: settings.micVolume,
|
||||
settingsRadioVolume: settings.radioVolume,
|
||||
settingsAutoCloseMapPopup: settings.autoCloseMapPopup,
|
||||
settingsUseHPGAsDispatcher: settings.useHPGAsDispatcher,
|
||||
},
|
||||
});
|
||||
setAudioSettings({
|
||||
@@ -239,7 +258,7 @@ export const SettingsBtn = () => {
|
||||
}}
|
||||
>
|
||||
Speichern
|
||||
</button>
|
||||
</Button>
|
||||
</div>
|
||||
</div>
|
||||
</dialog>
|
||||
|
||||
@@ -28,8 +28,11 @@ import { selectRandomHPGMissionSzenery } from "_helpers/selectRandomHPGMission";
|
||||
import { AxiosError } from "axios";
|
||||
import { cn } from "@repo/shared-components";
|
||||
import { StationsSelect } from "(app)/dispatch/_components/StationSelect";
|
||||
import { getUserAPI } from "_querys/user";
|
||||
|
||||
export const MissionForm = () => {
|
||||
const session = useSession();
|
||||
|
||||
const { editingMissionId, setEditingMission } = usePannelStore();
|
||||
const queryClient = useQueryClient();
|
||||
const { setSearchElements, searchElements, setContextMenu } = useMapStore((s) => s);
|
||||
@@ -44,6 +47,10 @@ export const MissionForm = () => {
|
||||
queryFn: () => getConnectedAircraftsAPI(),
|
||||
refetchInterval: 10000,
|
||||
});
|
||||
const { data: user } = useQuery({
|
||||
queryKey: ["user", session.data?.user.id],
|
||||
queryFn: () => getUserAPI(session.data!.user.id),
|
||||
});
|
||||
|
||||
const createMissionMutation = useMutation({
|
||||
mutationFn: createMissionAPI,
|
||||
@@ -81,7 +88,6 @@ export const MissionForm = () => {
|
||||
},
|
||||
});
|
||||
|
||||
const session = useSession();
|
||||
const defaultFormValues = React.useMemo(
|
||||
() =>
|
||||
({
|
||||
@@ -124,7 +130,9 @@ export const MissionForm = () => {
|
||||
form.watch("missionStationIds"),
|
||||
aircrafts,
|
||||
form.watch("hpgMissionString"),
|
||||
) && !form.watch("hpgMissionString")?.startsWith("kein Szenario");
|
||||
) &&
|
||||
!form.watch("hpgMissionString")?.startsWith("kein Szenario") &&
|
||||
user?.settingsUseHPGAsDispatcher;
|
||||
|
||||
useEffect(() => {
|
||||
if (session.data?.user.id) {
|
||||
|
||||
@@ -3,15 +3,17 @@ import { useEffect, useRef, useState } from "react";
|
||||
import { GearIcon } from "@radix-ui/react-icons";
|
||||
import { Bell, SettingsIcon, Volume2 } from "lucide-react";
|
||||
import MicVolumeBar from "_components/MicVolumeIndication";
|
||||
import { useMutation, useQuery } from "@tanstack/react-query";
|
||||
import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
|
||||
import { editUserAPI, getUserAPI } from "_querys/user";
|
||||
import { useSession } from "next-auth/react";
|
||||
import { useAudioStore } from "_store/audioStore";
|
||||
import toast from "react-hot-toast";
|
||||
import Link from "next/link";
|
||||
import { Button } from "@repo/shared-components";
|
||||
|
||||
export const SettingsBtn = () => {
|
||||
const session = useSession();
|
||||
const queryClient = useQueryClient();
|
||||
|
||||
const [inputDevices, setInputDevices] = useState<MediaDeviceInfo[]>([]);
|
||||
const { data: user } = useQuery({
|
||||
@@ -22,6 +24,10 @@ export const SettingsBtn = () => {
|
||||
|
||||
const editUserMutation = useMutation({
|
||||
mutationFn: editUserAPI,
|
||||
mutationKey: ["user", session.data?.user.id],
|
||||
onSuccess: async () => {
|
||||
await queryClient.invalidateQueries({ queryKey: ["user", session.data?.user.id] });
|
||||
},
|
||||
});
|
||||
|
||||
useEffect(() => {
|
||||
@@ -248,7 +254,7 @@ export const SettingsBtn = () => {
|
||||
>
|
||||
Schließen
|
||||
</button>
|
||||
<button
|
||||
<Button
|
||||
className="btn btn-soft btn-success"
|
||||
type="submit"
|
||||
onSubmit={() => false}
|
||||
@@ -275,7 +281,7 @@ export const SettingsBtn = () => {
|
||||
}}
|
||||
>
|
||||
Speichern
|
||||
</button>
|
||||
</Button>
|
||||
</div>
|
||||
</div>
|
||||
</dialog>
|
||||
|
||||
@@ -23,7 +23,7 @@ const Map = dynamic(() => 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({
|
||||
|
||||
Reference in New Issue
Block a user