Files
var-monorepo/apps/dispatch/app/pilot/_components/dme/useSounds.ts

53 lines
1.4 KiB
TypeScript

"use client";
import { usePilotConnectionStore } from "_store/pilot/connectionStore";
import { useDmeStore } from "_store/pilot/dmeStore";
import { useEffect, useRef } from "react";
export const useSounds = () => {
const { page, setPage } = useDmeStore((state) => state);
const mission = usePilotConnectionStore((state) => state.activeMission);
const newMissionSound = useRef<HTMLAudioElement | null>(null);
useEffect(() => {
if (typeof window !== "undefined") {
newMissionSound.current = new Audio("/sounds/Melder3.wav");
}
}, []);
useEffect(() => {
const timeouts: NodeJS.Timeout[] = [];
if (page === "new-mission" && newMissionSound.current) {
console.log("new-mission", mission);
newMissionSound.current.currentTime = 0;
newMissionSound.current.volume = 0.3;
newMissionSound.current.play();
if (mission) {
timeouts.push(
setTimeout(() => setPage({ page: "mission", mission }), 500),
);
}
} else if (page === "acknowledge") {
newMissionSound.current?.pause();
if (mission) {
timeouts.push(
setTimeout(() => setPage({ page: "mission", mission }), 500),
);
} else {
timeouts.push(
setTimeout(
() => setPage({ page: "error", error: "Einsatz nicht gebunden" }),
500,
),
);
}
}
return () => {
timeouts.forEach((t) => {
clearTimeout(t);
});
};
}, [page, setPage, mission]);
};