From ba49054cd74c9b4ed9f79a1ffdf935ef350530a4 Mon Sep 17 00:00:00 2001 From: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com> Date: Fri, 13 Sep 2024 06:57:30 -0500 Subject: [PATCH 01/11] Change camera offline error display and message (#13712) * Don't display offline message in live player if camera is restreamed * Update error message * simplify message --- web/src/components/player/LivePlayer.tsx | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/web/src/components/player/LivePlayer.tsx b/web/src/components/player/LivePlayer.tsx index ec24d255f..0d7b67fa8 100644 --- a/web/src/components/player/LivePlayer.tsx +++ b/web/src/components/player/LivePlayer.tsx @@ -59,6 +59,7 @@ export default function LivePlayer({ onResetLiveMode, }: LivePlayerProps) { const internalContainerRef = useRef(null); + // camera activity const { activeMotion, activeTracking, objects, offline } = @@ -299,12 +300,16 @@ export default function LivePlayer({ {offline && !showStillWithoutActivity && ( -
-

- {capitalizeFirstLetter(cameraConfig.name)} is offline -

- -

No frames have been received, check error logs

+
+
+

Stream offline

+ +

+ No frames have been received on the{" "} + {capitalizeFirstLetter(cameraConfig.name)} detect{" "} + stream, check error logs +

+
)} From 90c1cc3e3b4f731293105fad9c7eaca236ea133f Mon Sep 17 00:00:00 2001 From: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com> Date: Fri, 13 Sep 2024 07:07:11 -0500 Subject: [PATCH 02/11] Ensure all cameras switch enables/disables each individual switch (#13716) --- .../components/filter/CamerasFilterButton.tsx | 53 +++++++++++++------ .../overlay/detail/SearchDetailDialog.tsx | 2 +- 2 files changed, 39 insertions(+), 16 deletions(-) diff --git a/web/src/components/filter/CamerasFilterButton.tsx b/web/src/components/filter/CamerasFilterButton.tsx index dfe3fdaa1..1b36102b8 100644 --- a/web/src/components/filter/CamerasFilterButton.tsx +++ b/web/src/components/filter/CamerasFilterButton.tsx @@ -29,7 +29,10 @@ export function CamerasFilterButton({ }: CameraFilterButtonProps) { const [open, setOpen] = useState(false); const [currentCameras, setCurrentCameras] = useState( - selectedCameras, + selectedCameras === undefined ? [...allCameras] : selectedCameras, + ); + const [allCamerasSelected, setAllCamerasSelected] = useState( + selectedCameras === undefined, ); const buttonText = useMemo(() => { @@ -37,12 +40,18 @@ export function CamerasFilterButton({ return "Cameras"; } - if (!selectedCameras || selectedCameras.length == 0) { + if (allCamerasSelected) { return "All Cameras"; } - return `${selectedCameras.includes("birdseye") ? selectedCameras.length - 1 : selectedCameras.length} Camera${selectedCameras.length !== 1 ? "s" : ""}`; - }, [selectedCameras]); + if (!currentCameras || currentCameras.length === 0) { + return "No cameras"; + } + + return `${currentCameras.includes("birdseye") ? currentCameras.length - 1 : currentCameras.length} Camera${ + currentCameras.length !== 1 ? "s" : "" + }`; + }, [allCamerasSelected, currentCameras]); const trigger = (
- + {isDesktop && }
- + {isDesktop && }