mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-03-21 23:58:22 +03:00
Some checks are pending
CI / AMD64 Build (push) Waiting to run
CI / ARM Build (push) Waiting to run
CI / Jetson Jetpack 6 (push) Waiting to run
CI / AMD64 Extra Build (push) Blocked by required conditions
CI / ARM Extra Build (push) Blocked by required conditions
CI / Synaptics Build (push) Blocked by required conditions
CI / Assemble and push default build (push) Blocked by required conditions
* debug replay implementation * fix masks after dev rebase * fix squash merge issues * fix * fix * fix * no need to write debug replay camera to config * camera and filter button and dropdown * add filters * add ability to edit motion and object config for debug replay * add debug draw overlay to debug replay * add guard to prevent crash when camera is no longer in camera_states * fix overflow due to radix absolutely positioned elements * increase number of messages * ensure deep_merge replaces existing list values when override is true * add back button * add debug replay to explore and review menus * clean up * clean up * update instructions to prevent exposing exception info * fix typing * refactor output logic * refactor with helper function * move init to function for consistency
54 lines
1.3 KiB
TypeScript
54 lines
1.3 KiB
TypeScript
import { WsFeedMessage } from "@/api/ws";
|
|
|
|
const EVENT_TOPICS = new Set([
|
|
"events",
|
|
"reviews",
|
|
"tracked_object_update",
|
|
"triggers",
|
|
]);
|
|
|
|
const SYSTEM_TOPICS = new Set([
|
|
"stats",
|
|
"model_state",
|
|
"job_state",
|
|
"embeddings_reindex_progress",
|
|
"audio_transcription_state",
|
|
"birdseye_layout",
|
|
]);
|
|
|
|
export function extractCameraName(message: WsFeedMessage): string | null {
|
|
// Try extracting from topic pattern: {camera}/motion, {camera}/audio/rms, etc.
|
|
const topicParts = message.topic.split("/");
|
|
if (
|
|
topicParts.length >= 2 &&
|
|
!EVENT_TOPICS.has(message.topic) &&
|
|
!SYSTEM_TOPICS.has(message.topic) &&
|
|
message.topic !== "camera_activity" &&
|
|
message.topic !== "audio_detections" &&
|
|
message.topic !== "restart" &&
|
|
message.topic !== "notification_test"
|
|
) {
|
|
return topicParts[0];
|
|
}
|
|
|
|
// Try extracting from payload
|
|
try {
|
|
const data =
|
|
typeof message.payload === "string"
|
|
? JSON.parse(message.payload)
|
|
: message.payload;
|
|
|
|
if (typeof data === "object" && data !== null) {
|
|
if ("camera" in data) return data.camera as string;
|
|
if ("after" in data && data.after?.camera)
|
|
return data.after.camera as string;
|
|
if ("before" in data && data.before?.camera)
|
|
return data.before.camera as string;
|
|
}
|
|
} catch {
|
|
// ignore parse errors
|
|
}
|
|
|
|
return null;
|
|
}
|