diff --git a/web/src/App.jsx b/web/src/App.jsx index ef5efae..63c223e 100644 --- a/web/src/App.jsx +++ b/web/src/App.jsx @@ -1,4 +1,6 @@ +import { useEffect, useState } from "react"; import { NavLink, Navigate, Route, Routes, useNavigate } from "react-router-dom"; +import { api } from "./api"; import { useAuth } from "./auth"; import Icon from "./components/Icon"; import BrandMark from "./components/BrandMark"; @@ -33,6 +35,19 @@ function NavItem({ to, icon, label, end }) { function Sidebar() { const { user, isAdmin, logout } = useAuth(); const navigate = useNavigate(); + const [dashboards, setDashboards] = useState([]); + + // Die Dashboards des Benutzers stehen als eigene Eintraege in der Leiste. + // Sie aendern sich beim Anlegen und Loeschen, deshalb horcht die Leiste auf + // das Ereignis, das die Dashboard-Seite dabei ausloest. + useEffect(() => { + function laden() { + api.dashboards().then((a) => setDashboards(a.dashboards)).catch(() => {}); + } + laden(); + window.addEventListener("dashboards-geaendert", laden); + return () => window.removeEventListener("dashboards-geaendert", laden); + }, []); function handleLogout() { logout(); @@ -46,6 +61,14 @@ function Sidebar() {