diff --git a/web/src/components/player/DynamicVideoPlayer.tsx b/web/src/components/player/DynamicVideoPlayer.tsx
index 0c5b98e69..7cddb59b2 100644
--- a/web/src/components/player/DynamicVideoPlayer.tsx
+++ b/web/src/components/player/DynamicVideoPlayer.tsx
@@ -28,6 +28,7 @@ type DynamicVideoPlayerProps = {
timeRange: { start: number; end: number };
cameraPreviews: Preview[];
previewOnly?: boolean;
+ preloadRecordings: boolean;
onControllerReady: (controller: DynamicVideoController) => void;
onClick?: () => void;
};
@@ -37,6 +38,7 @@ export default function DynamicVideoPlayer({
timeRange,
cameraPreviews,
previewOnly = false,
+ preloadRecordings = true,
onControllerReady,
onClick,
}: DynamicVideoPlayerProps) {
@@ -100,18 +102,26 @@ export default function DynamicVideoPlayer({
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [controller]);
+ const [initPreviewOnly, setInitPreviewOnly] = useState(previewOnly);
+
useEffect(() => {
if (!controller || !playerRef) {
return;
}
+ if (previewOnly == initPreviewOnly) {
+ return;
+ }
+
if (previewOnly) {
playerRef.autoplay(false);
controller.removePlayerListeners();
} else {
controller.setPlayerListeners();
- playerRef.play();
+ controller.seekToTimestamp(playerRef.currentTime() || 0, true);
}
+
+ setInitPreviewOnly(previewOnly);
// we only want to fire once when players are ready
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [controller, previewOnly]);
@@ -266,42 +276,44 @@ export default function DynamicVideoPlayer({
className={`relative ${className ?? ""} ${onClick ? (hasRecordingAtTime ? "cursor-pointer" : "") : ""}`}
onClick={onClick}
>
-
-
{
- setPlayerRef(player);
- }}
- onDispose={() => {
- setPlayerRef(undefined);
- }}
+ {preloadRecordings && (
+
- {config && focusedItem && (
-
- )}
-
-
+ {
+ setPlayerRef(player);
+ }}
+ onDispose={() => {
+ setPlayerRef(undefined);
+ }}
+ >
+ {config && focusedItem && (
+
+ )}
+
+
+ )}