diff --git a/web/src/Sidebar.jsx b/web/src/Sidebar.jsx index aa7ad4d6d..40306ef2a 100644 --- a/web/src/Sidebar.jsx +++ b/web/src/Sidebar.jsx @@ -3,6 +3,7 @@ import LinkedLogo from './components/LinkedLogo'; import { Match } from 'preact-router/match'; import { memo } from 'preact/compat'; import { ENV } from './env'; +import { useMemo } from 'preact/hooks' import useSWR from 'swr'; import NavigationDrawer, { Destination, Separator } from './components/NavigationDrawer'; @@ -19,42 +20,14 @@ export default function Sidebar() { {({ matches }) => matches ? ( - - - {Object.entries(cameras) - .filter(([_, conf]) => conf.ui.show) - .sort(([_, aConf], [__, bConf]) => aConf.ui.order === bConf.ui.order ? 0 : (aConf.ui.order > bConf.ui.order ? 1 : -1)) - .map(([camera]) => ( - - ))} - - + ) : null } {({ matches }) => matches ? ( - - - {Object.entries(cameras) - .filter(([_, conf]) => conf.gui.show) - .sort(([_, aConf], [__, bConf]) => aConf.ui.order === bConf.ui.order ? 0 : (aConf.ui.order > bConf.ui.order ? 1 : -1)) - .map(([camera, conf]) => { - if (conf.record.enabled) { - return ( - - ); - } - return null; - })} - - + ) : null } @@ -75,6 +48,54 @@ export default function Sidebar() { ); } +function SortedCameras({ unsortedCameras }) { + + const sortedCameras = useMemo(() => { + Object.entries(unsortedCameras) + .filter(([_, conf]) => conf.ui.show) + .sort(([_, aConf], [__, bConf]) => aConf.ui.order === bConf.ui.order ? 0 : (aConf.ui.order > bConf.ui.order ? 1 : -1)) + }, [unsortedCameras]); + + return ( + + + {sortedCameras.map(([camera]) => ( + + ))} + + + ); +} + +function SortedRecordingCameras({ unsortedCameras }) { + + const sortedCameras = useMemo(() => { + Object.entries(unsortedCameras) + .filter(([_, conf]) => conf.ui.show) + .sort(([_, aConf], [__, bConf]) => aConf.ui.order === bConf.ui.order ? 0 : (aConf.ui.order > bConf.ui.order ? 1 : -1)) + }, [unsortedCameras]); + + return ( + + + {sortedCameras.map(([camera, conf]) => { + if (conf.record.enabled) { + return ( + + ); + } + return null; + })} + + + ); +} + const Header = memo(() => { return (