"use client"; // components/Header.jsx import React, { useState, useEffect } from "react"; import Image from "next/image"; import { useRouter } from "next/router"; import "bootstrap-icons/font/bootstrap-icons.css"; import SettingsModal from "@/components/header/settingsModal/SettingsModal"; import { RootState } from "@/redux/store"; import { useSelector, useDispatch } from "react-redux"; import { AppDispatch } from "@/redux/store"; import { getSystemSettingsThunk } from "@/redux/thunks/getSystemSettingsThunk"; function Header() { const router = useRouter(); const [showSettingsModal, setShowSettingsModal] = useState(false); const [isAdminLoggedIn, setIsAdminLoggedIn] = useState(false); // Removed duplicate declaration of deviceName const handleCloseSettingsModal = () => setShowSettingsModal(false); const handleLogout = () => { sessionStorage.removeItem("token"); // Token entfernen localStorage.setItem("isAdminLoggedIn", "false"); // Admin-Status entfernen setIsAdminLoggedIn(false); // Zustand sofort aktualisieren router.push("/offline.html"); // Weiterleitung }; useEffect(() => { // Initialer Check beim Laden der Komponente const isAdmin = localStorage.getItem("isAdminLoggedIn") === "true"; setIsAdminLoggedIn(isAdmin); // Beobachten von Änderungen in localStorage const interval = setInterval(() => { const updatedIsAdmin = localStorage.getItem("isAdminLoggedIn") === "true"; if (updatedIsAdmin !== isAdminLoggedIn) { setIsAdminLoggedIn(updatedIsAdmin); } }, 500); // Überprüfung alle 500ms return () => { clearInterval(interval); // Intervall stoppen, wenn die Komponente entladen wird }; }, [isAdminLoggedIn]); //---------------------------------------------------------------- const dispatch = useDispatch(); const deviceName = useSelector( (state: RootState) => state.systemSettingsSlice.deviceName ); useEffect(() => { if (!deviceName) { dispatch(getSystemSettingsThunk()); } }, [deviceName, dispatch]); //---------------------------------------------------------------- return (
Logo
{/* TALAS-Logo + Text nebeneinander (flexibel oben links) */}
TALAS Logo

Meldestation

{deviceName}

{/* Admin-Login */} {/* */}
{/* Logout-Button */}
{/* Warnhinweis, wenn der Admin angemeldet ist */} {isAdminLoggedIn && (
Admin-Modus aktiv
)} {showSettingsModal && ( )}
); } export default Header;