diff --git a/web/src/Sidebar.jsx b/web/src/Sidebar.jsx index afc69a828..b76bb76a2 100644 --- a/web/src/Sidebar.jsx +++ b/web/src/Sidebar.jsx @@ -9,10 +9,21 @@ import NavigationDrawer, { Destination, Separator } from './components/Navigatio export default function Sidebar() { const { data: config } = useSWR('config'); + + const sortedCameras = useMemo(() => { + if (!config) { + return []; + } + + return Object.entries(config.cameras) + .filter(([_, conf]) => conf.ui.dashboard) + .sort(([_, aConf], [__, bConf]) => aConf.ui.order === bConf.ui.order ? 0 : (aConf.ui.order > bConf.ui.order ? 1 : -1)); + }, [config]); + if (!config) { return null; } - const { cameras, birdseye } = config; + const { birdseye } = config; return ( }> @@ -20,14 +31,14 @@ export default function Sidebar() { {({ matches }) => matches ? ( - + ) : null } {({ matches }) => matches ? ( - + ) : null } @@ -48,13 +59,7 @@ export default function Sidebar() { ); } -function SortedCameras({ unsortedCameras }) { - - const sortedCameras = useMemo(() => - Object.entries(unsortedCameras) - .filter(([_, conf]) => conf.ui.dashboard) - .sort(([_, aConf], [__, bConf]) => aConf.ui.order === bConf.ui.order ? 0 : (aConf.ui.order > bConf.ui.order ? 1 : -1)), - [unsortedCameras]); +function CameraSection({ sortedCameras }) { return ( @@ -67,13 +72,7 @@ function SortedCameras({ unsortedCameras }) { ); } -function SortedRecordingCameras({ unsortedCameras }) { - - const sortedCameras = useMemo(() => - Object.entries(unsortedCameras) - .filter(([_, conf]) => conf.ui.dashboard) - .sort(([_, aConf], [__, bConf]) => aConf.ui.order === bConf.ui.order ? 0 : (aConf.ui.order > bConf.ui.order ? 1 : -1)), - [unsortedCameras]); +function RecordingSection({ sortedCameras }) { return (