Add reviews to frontend

This commit is contained in:
Nicolas Mowen 2024-02-26 14:47:16 -07:00
parent 849f343b25
commit e34670fedc
3 changed files with 23 additions and 3 deletions

View File

@ -1,5 +1,6 @@
"""Maintain review segments in db.""" """Maintain review segments in db."""
import json
import logging import logging
import os import os
import random import random
@ -138,7 +139,12 @@ class ReviewSegmentMaintainer(threading.Thread):
def end_segment(self, segment: PendingReviewSegment) -> None: def end_segment(self, segment: PendingReviewSegment) -> None:
"""End segment.""" """End segment."""
self.requestor.send_data(UPSERT_REVIEW_SEGMENT, segment.end()) seg_data = segment.end()
self.requestor.send_data(UPSERT_REVIEW_SEGMENT, seg_data)
self.requestor.send_data(
"reviews",
json.dumps({"type": "end", "review": {k.name: v for k, v in seg_data.items()}}),
)
self.active_review_segments[segment.camera] = None self.active_review_segments[segment.camera] = None
def update_existing_segment( def update_existing_segment(

View File

@ -10,7 +10,7 @@ import {
import { produce, Draft } from "immer"; import { produce, Draft } from "immer";
import useWebSocket, { ReadyState } from "react-use-websocket"; import useWebSocket, { ReadyState } from "react-use-websocket";
import { FrigateConfig } from "@/types/frigateConfig"; import { FrigateConfig } from "@/types/frigateConfig";
import { FrigateEvent, ToggleableSetting } from "@/types/ws"; import { FrigateEvent, FrigateReview, ToggleableSetting } from "@/types/ws";
import { FrigateStats } from "@/types/stats"; import { FrigateStats } from "@/types/stats";
type ReducerState = { type ReducerState = {
@ -218,7 +218,14 @@ export function useRestart(): {
export function useFrigateEvents(): { payload: FrigateEvent } { export function useFrigateEvents(): { payload: FrigateEvent } {
const { const {
value: { payload }, value: { payload },
} = useWs(`events`, ""); } = useWs("events", "");
return { payload };
}
export function useFrigateReviews(): { payload: FrigateReview } {
const {
value: { payload },
} = useWs("reviews", "");
return { payload }; return { payload };
} }

View File

@ -1,3 +1,5 @@
import { ReviewSegment } from "./review";
type FrigateObjectState = { type FrigateObjectState = {
id: string; id: string;
camera: string; camera: string;
@ -27,6 +29,11 @@ type FrigateObjectState = {
}; };
}; };
export interface FrigateReview {
type: "new" | "update" | "end";
review: ReviewSegment;
}
export interface FrigateEvent { export interface FrigateEvent {
type: "new" | "update" | "end"; type: "new" | "update" | "end";
before: FrigateObjectState; before: FrigateObjectState;