Merge branch 'main' of https://github.com/VAR-Virtual-Air-Rescue/var-monorepo
This commit is contained in:
@@ -21,6 +21,8 @@ import { ROOMS } from "_data/livekitRooms";
|
||||
|
||||
export const Audio = () => {
|
||||
const connection = usePilotConnectionStore();
|
||||
const [showSource, setShowSource] = useState(false);
|
||||
|
||||
const {
|
||||
isTalking,
|
||||
toggleTalking,
|
||||
@@ -31,9 +33,16 @@ export const Audio = () => {
|
||||
remoteParticipants,
|
||||
room,
|
||||
message,
|
||||
source,
|
||||
} = useAudioStore();
|
||||
const [selectedRoom, setSelectedRoom] = useState<string>("LST_01");
|
||||
|
||||
useEffect(() => {
|
||||
setShowSource(true);
|
||||
setTimeout(() => {
|
||||
setShowSource(false);
|
||||
}, 2000);
|
||||
}, [source, isTalking]);
|
||||
useEffect(() => {
|
||||
const joinRoom = async () => {
|
||||
if (connection.status != "connected") return;
|
||||
@@ -55,6 +64,9 @@ export const Audio = () => {
|
||||
{state === "error" && (
|
||||
<div className="h-4 flex items-center">{message}</div>
|
||||
)}
|
||||
{showSource && source && (
|
||||
<div className="h-4 flex items-center">{source}</div>
|
||||
)}
|
||||
<button
|
||||
onClick={() => {
|
||||
if (state === "connected") toggleTalking();
|
||||
|
||||
@@ -5,6 +5,7 @@ import { toast } from "react-hot-toast";
|
||||
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
|
||||
import { ReactNode, useEffect, useState } from "react";
|
||||
import { dispatchSocket } from "dispatch/socket";
|
||||
import { Mission } from "@repo/db";
|
||||
|
||||
export function QueryProvider({ children }: { children: ReactNode }) {
|
||||
const [queryClient] = useState(
|
||||
@@ -22,7 +23,7 @@ export function QueryProvider({ children }: { children: ReactNode }) {
|
||||
}),
|
||||
);
|
||||
useEffect(() => {
|
||||
const invalidateMission = () => {
|
||||
const invalidateMission = (mission: Mission) => {
|
||||
queryClient.invalidateQueries({
|
||||
queryKey: ["missions"],
|
||||
});
|
||||
|
||||
@@ -45,7 +45,7 @@ export const useAudioStore = create<TalkState>((set, get) => ({
|
||||
if (!room) return;
|
||||
room.localParticipant.setMicrophoneEnabled(!isTalking);
|
||||
|
||||
set((state) => ({ isTalking: !state.isTalking }));
|
||||
set((state) => ({ isTalking: !state.isTalking, source: "web-app" }));
|
||||
},
|
||||
connect: async (roomName) => {
|
||||
set({ state: "connecting" });
|
||||
|
||||
@@ -105,6 +105,9 @@ export const MissionForm = () => {
|
||||
});
|
||||
const { missionFormValues, setOpen } = usePannelStore((state) => state);
|
||||
|
||||
const missionInfoText = form.watch("missionAdditionalInfo");
|
||||
const hpgMissionString = form.watch("hpgMissionString");
|
||||
|
||||
useEffect(() => {
|
||||
if (session.data?.user.id) {
|
||||
form.setValue("createdUserId", session.data.user.id);
|
||||
@@ -178,7 +181,7 @@ export const MissionForm = () => {
|
||||
</div>
|
||||
<input
|
||||
type="text"
|
||||
{...form.register("missionAdditionalInfo")}
|
||||
{...form.register("addressAdditionalInfo")}
|
||||
placeholder="Zusätzliche Adressinformationen"
|
||||
className="input input-primary input-bordered w-full mt-4"
|
||||
/>
|
||||
@@ -342,10 +345,16 @@ export const MissionForm = () => {
|
||||
onClick={form.handleSubmit(
|
||||
async (mission: MissionOptionalDefaults) => {
|
||||
try {
|
||||
const hpgSzenario = mission.hpgMissionString?.split(":")[0];
|
||||
const newMission = await editMissionMutation.mutateAsync({
|
||||
id: Number(editingMissionId),
|
||||
mission:
|
||||
mission as unknown as Partial<Prisma.MissionUpdateInput>,
|
||||
mission: {
|
||||
...(mission as unknown as Prisma.MissionCreateInput),
|
||||
missionAdditionalInfo:
|
||||
!mission.missionAdditionalInfo.length && hpgSzenario
|
||||
? `HPG-Szenario: ${hpgSzenario}`
|
||||
: mission.missionAdditionalInfo,
|
||||
},
|
||||
});
|
||||
toast.success(
|
||||
`Einsatz ${newMission.id} erfolgreich aktualisiert`,
|
||||
@@ -372,14 +381,18 @@ export const MissionForm = () => {
|
||||
onClick={form.handleSubmit(
|
||||
async (mission: MissionOptionalDefaults) => {
|
||||
try {
|
||||
const hpgSzenario =
|
||||
mission.hpgMissionString?.split(":")[0];
|
||||
const newMission =
|
||||
await createMissionMutation.mutateAsync(
|
||||
mission as unknown as Prisma.MissionCreateInput,
|
||||
);
|
||||
await createMissionMutation.mutateAsync({
|
||||
...(mission as unknown as Prisma.MissionCreateInput),
|
||||
missionAdditionalInfo:
|
||||
!mission.missionAdditionalInfo.length && hpgSzenario
|
||||
? `HPG-Szenario: ${hpgSzenario}`
|
||||
: mission.missionAdditionalInfo,
|
||||
});
|
||||
await sendAlertMutation.mutateAsync(newMission.id);
|
||||
setSeachOSMElements([]); // Reset search elements
|
||||
toast.success(`Einsatz ${newMission.id} erstellt`);
|
||||
// TODO: Einsatz alarmieren
|
||||
setOpen(false);
|
||||
} catch (error) {
|
||||
toast.error(
|
||||
@@ -397,10 +410,16 @@ export const MissionForm = () => {
|
||||
onClick={form.handleSubmit(
|
||||
async (mission: MissionOptionalDefaults) => {
|
||||
try {
|
||||
const hpgSzenario =
|
||||
mission.hpgMissionString?.split(":")[0];
|
||||
const newMission =
|
||||
await createMissionMutation.mutateAsync(
|
||||
mission as unknown as Prisma.MissionCreateInput,
|
||||
);
|
||||
await createMissionMutation.mutateAsync({
|
||||
...(mission as unknown as Prisma.MissionCreateInput),
|
||||
missionAdditionalInfo:
|
||||
!mission.missionAdditionalInfo.length && hpgSzenario
|
||||
? `HPG-Szenario: ${hpgSzenario}`
|
||||
: mission.missionAdditionalInfo,
|
||||
});
|
||||
setSeachOSMElements([]); // Reset search elements
|
||||
|
||||
toast.success(`Einsatz ${newMission.publicId} erstellt`);
|
||||
|
||||
Reference in New Issue
Block a user