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 (