From a95e5321d0d94e586840e7f10f17b8b1fc8fc7eb Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 22 Mar 2026 07:36:16 +0000 Subject: [PATCH] Fix fitCameraOrder reset on every re-render due to unstable cameras ref Replace cameras array dependency in the reset useEffect with a stable cameraKey string (sorted camera names joined by comma). Since cameras is recreated on every parent render, the previous effect fired on each re-render, immediately clearing the persisted order. The key changes only when the actual set of cameras changes. https://claude.ai/code/session_018sRNpvMwxLgt5Un8PCjfRU --- web/src/views/live/DraggableGridLayout.tsx | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/web/src/views/live/DraggableGridLayout.tsx b/web/src/views/live/DraggableGridLayout.tsx index 9d42c0b1c..c4b28a2f7 100644 --- a/web/src/views/live/DraggableGridLayout.tsx +++ b/web/src/views/live/DraggableGridLayout.tsx @@ -485,11 +485,16 @@ export default function DraggableGridLayout({ })); }, [fitToScreen, fitGridParams, cameras, includeBirdseye, birdseyeConfig, fitCameraOrder]); + const cameraKey = useMemo( + () => cameras.map((c) => c.name).sort().join(","), + [cameras], + ); + useEffect(() => { // Сбросить сохранённый порядок только если изменился набор камер // (добавили/удалили камеру), не при изменении размера окна setFitCameraOrder(undefined); - }, [cameras, includeBirdseye]); + }, [cameraKey, includeBirdseye]); const handleFitDragStop = useCallback( (