Skip to content

Commit

Permalink
Simplify ws updating (#12390)
Browse files Browse the repository at this point in the history
* Simplify ws updating

* Simplify return values
  • Loading branch information
NickM-27 authored Jul 11, 2024
1 parent fe4a737 commit e416e44
Show file tree
Hide file tree
Showing 7 changed files with 14 additions and 18 deletions.
12 changes: 7 additions & 5 deletions web/src/api/ws.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import {
import { FrigateStats } from "@/types/stats";
import useSWR from "swr";
import { createContainer } from "react-tracked";
import useDeepMemo from "@/hooks/use-deep-memo";

type Update = {
topic: string;
Expand Down Expand Up @@ -206,18 +207,18 @@ export function useFrigateEvents(): { payload: FrigateEvent } {
return { payload: JSON.parse(payload as string) };
}

export function useFrigateReviews(): { payload: FrigateReview } {
export function useFrigateReviews(): FrigateReview {
const {
value: { payload },
} = useWs("reviews", "");
return { payload: JSON.parse(payload as string) };
return useDeepMemo(JSON.parse(payload as string));
}

export function useFrigateStats(): { payload: FrigateStats } {
export function useFrigateStats(): FrigateStats {
const {
value: { payload },
} = useWs("stats", "");
return { payload: JSON.parse(payload as string) };
return useDeepMemo(JSON.parse(payload as string));
}

export function useInitialCameraState(
Expand All @@ -230,7 +231,8 @@ export function useInitialCameraState(
value: { payload },
send: sendCommand,
} = useWs("camera_activity", "onConnect");
const data = JSON.parse(payload as string);

const data = useDeepMemo(JSON.parse(payload as string));

useEffect(() => {
let listener = undefined;
Expand Down
2 changes: 1 addition & 1 deletion web/src/components/navigation/Bottombar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ function StatusAlertNav({ className }: StatusAlertNavProps) {
const { data: initialStats } = useSWR<FrigateStats>("stats", {
revalidateOnFocus: false,
});
const { payload: latestStats } = useFrigateStats();
const latestStats = useFrigateStats();

const { messages, addMessage, clearMessages } = useContext(
StatusBarMessagesContext,
Expand Down
7 changes: 2 additions & 5 deletions web/src/hooks/use-camera-activity.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,10 @@ export function useCameraActivity(

// init camera activity

const { payload: initialCameraState } = useInitialCameraState(
const { payload: updatedCameraState } = useInitialCameraState(
camera.name,
revalidateOnFocus,
);

const updatedCameraState = useDeepMemo(initialCameraState);

useEffect(() => {
if (updatedCameraState) {
setObjects(updatedCameraState.objects);
Expand Down Expand Up @@ -140,7 +137,7 @@ export function useCameraActivity(
activeTracking: hasActiveObjects,
activeMotion: detectingMotion
? detectingMotion === "ON"
: initialCameraState?.motion === true,
: updatedCameraState?.motion === true,
objects,
offline,
};
Expand Down
2 changes: 1 addition & 1 deletion web/src/hooks/use-stats.ts
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ export function useAutoFrigateStats() {
const { data: initialStats } = useSWR<FrigateStats>("stats", {
revalidateOnFocus: false,
});
const { payload: latestStats } = useFrigateStats();
const latestStats = useFrigateStats();

const stats = useMemo(() => {
if (latestStats) {
Expand Down
5 changes: 1 addition & 4 deletions web/src/views/live/LiveDashboardView.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@ import { cn } from "@/lib/utils";
import { LivePlayerError, LivePlayerMode } from "@/types/live";
import { FaCompress, FaExpand } from "react-icons/fa";
import { useResizeObserver } from "@/hooks/resize-observer";
import useDeepMemo from "@/hooks/use-deep-memo";

type LiveDashboardViewProps = {
cameras: CameraConfig[];
Expand Down Expand Up @@ -64,14 +63,12 @@ export default function LiveDashboardView({

// recent events

const { payload: reviewTopic } = useFrigateReviews();
const eventUpdate = useFrigateReviews();
const { data: allEvents, mutate: updateEvents } = useSWR<ReviewSegment[]>([
"review",
{ limit: 10, severity: "alert" },
]);

const eventUpdate = useDeepMemo(reviewTopic);

useEffect(() => {
if (!eventUpdate) {
return;
Expand Down
2 changes: 1 addition & 1 deletion web/src/views/system/CameraMetrics.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ export default function CameraMetrics({
);

const [statsHistory, setStatsHistory] = useState<FrigateStats[]>([]);
const { payload: updatedStats } = useFrigateStats();
const updatedStats = useFrigateStats();

useEffect(() => {
if (initialStats == undefined || initialStats.length == 0) {
Expand Down
2 changes: 1 addition & 1 deletion web/src/views/system/GeneralMetrics.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ export default function GeneralMetrics({
);

const [statsHistory, setStatsHistory] = useState<FrigateStats[]>([]);
const { payload: updatedStats } = useFrigateStats();
const updatedStats = useFrigateStats();

useEffect(() => {
if (initialStats == undefined || initialStats.length == 0) {
Expand Down

0 comments on commit e416e44

Please sign in to comment.