mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-04-05 14:47:40 +03:00
fix: revert CameraMotionDot, restore built-in LivePlayer motion dot
Remove the external CameraMotionDot component and showMotionDot={false}
override. The ws.ts fix (camera_activity -> motion topic sync) ensures
useCameraActivity gets fresh data, so the built-in dot in LivePlayer works.
https://claude.ai/code/session_019B4dJXtcxvHn97ZaqHUB62
This commit is contained in:
parent
703ffcf82e
commit
76652861b5
@ -29,8 +29,6 @@ import {
|
||||
} from "@/types/live";
|
||||
import ActivityIndicator from "@/components/indicators/activity-indicator";
|
||||
import { PlayerStats } from "@/components/player/PlayerStats";
|
||||
import { MdCircle } from "react-icons/md";
|
||||
import { useCameraActivity } from "@/hooks/use-camera-activity";
|
||||
import { Skeleton } from "@/components/ui/skeleton";
|
||||
|
||||
import { isEqual } from "lodash";
|
||||
@ -879,7 +877,6 @@ export default function DraggableGridLayout({
|
||||
[camera.name]: loading,
|
||||
}))
|
||||
}
|
||||
showMotionDot={false}
|
||||
onClick={() => {
|
||||
!isEditMode && onSelectCamera(camera.name);
|
||||
}}
|
||||
@ -911,10 +908,7 @@ export default function DraggableGridLayout({
|
||||
minimal={true}
|
||||
/>
|
||||
)}
|
||||
<CameraMotionDot
|
||||
camera={camera}
|
||||
autoLive={autoLive ?? globalAutoLive}
|
||||
/>
|
||||
|
||||
</div>
|
||||
{isEditMode && showCircles && <CornerCircles />}
|
||||
</GridLiveContextMenu>
|
||||
@ -1081,24 +1075,6 @@ const BirdseyeLivePlayerGridItem = React.forwardRef<
|
||||
},
|
||||
);
|
||||
|
||||
// Separate component so it can call useCameraActivity as a hook (no hooks in loops).
|
||||
// Direct WS subscription guarantees the dot reacts to motion changes in real-time
|
||||
// without relying on an intermediate callback → parent-state chain.
|
||||
function CameraMotionDot({
|
||||
camera,
|
||||
autoLive,
|
||||
}: {
|
||||
camera: CameraConfig;
|
||||
autoLive?: boolean;
|
||||
}) {
|
||||
const { activeMotion, offline } = useCameraActivity(camera);
|
||||
if (autoLive === false || offline || !activeMotion) return null;
|
||||
return (
|
||||
<div className="absolute right-2 top-2 z-40">
|
||||
<MdCircle className="mr-2 size-2 animate-pulse text-danger shadow-danger drop-shadow-md" />
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
type GridLiveContextMenuProps = {
|
||||
className?: string;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user