From 9e8202874e27a56b3a67c3a04198d6e2956ee53f Mon Sep 17 00:00:00 2001 From: Nicolas Mowen Date: Wed, 29 May 2024 12:06:48 -0600 Subject: [PATCH] Remove live mode from config (#11618) * Use preferred mode as default * Remove live mode from config * Add deer icon * remove from config schema --- docs/docs/configuration/reference.md | 2 -- frigate/config.py | 3 --- frigate/util/config.py | 8 ++++++-- web/src/hooks/use-camera-live-mode.ts | 10 ++++------ web/src/types/frigateConfig.ts | 3 --- web/src/utils/iconUtil.tsx | 4 +++- 6 files changed, 13 insertions(+), 17 deletions(-) diff --git a/docs/docs/configuration/reference.md b/docs/docs/configuration/reference.md index f1929aa42..c6815517f 100644 --- a/docs/docs/configuration/reference.md +++ b/docs/docs/configuration/reference.md @@ -645,8 +645,6 @@ cameras: # Optional ui: - # Optional: Set the default live mode for cameras in the UI (default: shown below) - live_mode: mse # Optional: Set a timezone to use in the UI (default: use browser local time) # timezone: America/Denver # Optional: Set the time format used. diff --git a/frigate/config.py b/frigate/config.py index 6190413a7..1bd188f55 100644 --- a/frigate/config.py +++ b/frigate/config.py @@ -100,9 +100,6 @@ class DateTimeStyleEnum(str, Enum): class UIConfig(FrigateBaseModel): - live_mode: LiveModeEnum = Field( - default=LiveModeEnum.mse, title="Default Live Mode." - ) timezone: Optional[str] = Field(default=None, title="Override UI timezone.") time_format: TimeFormatEnum = Field( default=TimeFormatEnum.browser, title="Override UI time format." diff --git a/frigate/util/config.py b/frigate/util/config.py index 6f66a5992..0db523af6 100644 --- a/frigate/util/config.py +++ b/frigate/util/config.py @@ -87,8 +87,12 @@ def migrate_014(config: dict[str, dict[str, any]]) -> dict[str, dict[str, any]]: if not new_config["record"]: del new_config["record"] - if new_config.get("ui", {}).get("use_experimental"): - del new_config["ui"]["experimental"] + if new_config.get("ui"): + if new_config["ui"].get("use_experimental"): + del new_config["ui"]["experimental"] + + if new_config["ui"].get("live_mode"): + del new_config["ui"]["live_mode"] if not new_config["ui"]: del new_config["ui"] diff --git a/web/src/hooks/use-camera-live-mode.ts b/web/src/hooks/use-camera-live-mode.ts index e2dafe02e..2a1997045 100644 --- a/web/src/hooks/use-camera-live-mode.ts +++ b/web/src/hooks/use-camera-live-mode.ts @@ -6,7 +6,7 @@ import { LivePlayerMode } from "@/types/live"; export default function useCameraLiveMode( cameraConfig: CameraConfig, - preferredMode?: string, + preferredMode?: LivePlayerMode, ): LivePlayerMode | undefined { const { data: config } = useSWR("config"); @@ -23,18 +23,16 @@ export default function useCameraLiveMode( ); }, [config, cameraConfig]); const defaultLiveMode = useMemo(() => { - if (config && cameraConfig) { + if (config) { if (restreamEnabled) { - return cameraConfig.ui.live_mode || config.ui.live_mode; + return preferredMode || "mse"; } return "jsmpeg"; } return undefined; - // config will be updated if camera config is updated - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [cameraConfig, restreamEnabled]); + }, [config, preferredMode, restreamEnabled]); const [viewSource] = usePersistence( `${cameraConfig.name}-source`, defaultLiveMode, diff --git a/web/src/types/frigateConfig.ts b/web/src/types/frigateConfig.ts index b24841151..2eb7622d6 100644 --- a/web/src/types/frigateConfig.ts +++ b/web/src/types/frigateConfig.ts @@ -1,5 +1,4 @@ import { IconName } from "@/components/icons/IconPicker"; -import { LivePlayerMode } from "./live"; export interface UiConfig { timezone?: string; @@ -7,8 +6,6 @@ export interface UiConfig { date_style?: "full" | "long" | "medium" | "short"; time_style?: "full" | "long" | "medium" | "short"; strftime_fmt?: string; - live_mode?: LivePlayerMode; - use_experimental?: boolean; dashboard: boolean; order: number; } diff --git a/web/src/utils/iconUtil.tsx b/web/src/utils/iconUtil.tsx index 3e8b8cca0..0a49f6dac 100644 --- a/web/src/utils/iconUtil.tsx +++ b/web/src/utils/iconUtil.tsx @@ -12,7 +12,7 @@ import { FaFire, FaUps, } from "react-icons/fa"; -import { GiHummingbird } from "react-icons/gi"; +import { GiDeer, GiHummingbird } from "react-icons/gi"; import { LuBox, LuLassoSelect } from "react-icons/lu"; import * as LuIcons from "react-icons/lu"; import { MdRecordVoiceOver } from "react-icons/md"; @@ -38,6 +38,8 @@ export function getIconForLabel(label: string, className?: string) { return ; case "cat": return ; + case "deer": + return ; case "animal": case "bark": case "dog":