Chat animation, Audio-Berechtigungsabfrage, Berechtigung Fehlermeldung

This commit is contained in:
PxlLoewe
2025-07-12 00:48:48 -07:00
parent 01bef65218
commit cea632c47a
4 changed files with 29 additions and 8 deletions

View File

@@ -16,7 +16,13 @@ export default async function RootLayout({
const session = await getServerSession();
if (!session?.user.permissions.includes("DISPO"))
return <Error title="Zugriff verweigert" statusCode={403} />;
return (
<Error
title=" Fehlende Berechtigung"
description="Du hast nicht die erforderlichen Berechtigungen, dich als Disponent anzumelden. Du kannst im HUB Kurse abschließen um die Berechtigung zu erhalten."
statusCode={403}
/>
);
return (
<>

View File

@@ -16,7 +16,13 @@ export default async function RootLayout({
const session = await getServerSession();
if (!session?.user.permissions.includes("PILOT"))
return <Error title="Zugriff verweigert" statusCode={403} />;
return (
<Error
title=" Fehlende Berechtigung"
description="Du hast nicht die erforderlichen Berechtigungen, dich als Pilot anzumelden. Du kannst in HUB Kurse abschließen um die Berechtigung zu erhalten."
statusCode={403}
/>
);
return (
<>

View File

@@ -55,7 +55,7 @@ export const Chat = () => {
<div className={cn("dropdown dropdown-right dropdown-center", chatOpen && "dropdown-open")}>
<div className="indicator">
{Object.values(chats).some((c) => c.notification) && (
<span className="indicator-item status status-info"></span>
<span className="indicator-item status status-info animate-ping"></span>
)}
<button
className="btn btn-soft btn-sm btn-primary"

View File

@@ -51,11 +51,16 @@ export const SettingsBtn = () => {
}, [user, setMic]);
useEffect(() => {
if (typeof navigator !== "undefined" && navigator.mediaDevices?.enumerateDevices) {
navigator.mediaDevices.enumerateDevices().then((devices) => {
const setDevices = async () => {
if (typeof navigator !== "undefined" && navigator.mediaDevices?.enumerateDevices) {
const stream = await navigator.mediaDevices.getUserMedia({ video: false, audio: true });
const devices = await navigator.mediaDevices.enumerateDevices();
setInputDevices(devices.filter((d) => d.kind === "audioinput"));
});
}
stream.getTracks().forEach((track) => track.stop());
}
};
setDevices();
}, []);
return (
@@ -101,6 +106,10 @@ export const SettingsBtn = () => {
<p className="flex items-center gap-2 text-base mb-2 justify-start w-full">
<Volume2 size={20} /> Eingabelautstärke
</p>
{/*
TODO: Livekit Kann aktuell keine Lautstärke manuell überschreiben, daher ist die MicVolumeBar deaktiviert
<div className="w-full">
<input
type="range"
@@ -125,7 +134,7 @@ export const SettingsBtn = () => {
</div>
{showIndication && (
<MicVolumeBar deviceId={selectedDevice ? selectedDevice : ""} volumeInput={micVol} />
)}
)} */}
<div className="divider w-full" />
</div>
<p className="flex items-center gap-2 text-base mb-2">