From 2a2adfaf20739e9cd846da061c3935b7a43f611e Mon Sep 17 00:00:00 2001 From: Nick Mowen Date: Mon, 24 Oct 2022 15:34:59 -0600 Subject: [PATCH] Wait until camera source is loaded to avoid race condition --- web/src/routes/Camera.jsx | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/web/src/routes/Camera.jsx b/web/src/routes/Camera.jsx index c55bb9382..05fa8d8dd 100644 --- a/web/src/routes/Camera.jsx +++ b/web/src/routes/Camera.jsx @@ -28,8 +28,8 @@ export default function Camera({ camera }) { const jsmpegWidth = cameraConfig ? Math.round(cameraConfig.restream.jsmpeg.height * (cameraConfig.detect.width / cameraConfig.detect.height)) : 0; - const [viewSource, setViewSource] = usePersistence(`${camera}-source`, undefined); - const sourceValues = (cameraConfig && cameraConfig.restream.enabled) ? ['jsmpeg', 'mp4', 'webrtc'] : ['jsmpeg']; + const [viewSource, setViewSource, sourceIsLoaded] = usePersistence(`${camera}-source`, 'jsmpeg'); + const sourceValues = cameraConfig && cameraConfig.restream.enabled ? ['jsmpeg', 'mp4', 'webrtc'] : ['jsmpeg']; const [options, setOptions] = usePersistence(`${camera}-feed`, emptyObject); const handleSetOption = useCallback( @@ -55,7 +55,7 @@ export default function Camera({ camera }) { setShowSettings(!showSettings); }, [showSettings, setShowSettings]); - if (!cameraConfig) { + if (!cameraConfig || !sourceIsLoaded) { return ; } @@ -158,8 +158,10 @@ export default function Camera({ camera }) { return (
-
- {camera.replaceAll('_', ' ')} +
+ + {camera.replaceAll('_', ' ')} +