Fix defaults overriding intentional values.
This commit is contained in:
@@ -1,9 +1,5 @@
|
||||
import { HomeAssistant } from 'custom-card-helpers';
|
||||
import {
|
||||
CameraConfig,
|
||||
CamerasConfig,
|
||||
CardWideConfig,
|
||||
} from '../types.js';
|
||||
import { CameraConfig, CamerasConfig, CardWideConfig } from '../types.js';
|
||||
import { allPromises, arrayify, setify } from '../utils/basic.js';
|
||||
import {
|
||||
CameraManagerCameraCapabilities,
|
||||
@@ -137,11 +133,11 @@ export class CameraManager {
|
||||
};
|
||||
|
||||
const engineTypes = await getEngineTypes(camerasConfig);
|
||||
for (const [index, cameraConfig] of camerasConfig.entries()) {
|
||||
const engineType = engineTypes[index];
|
||||
for (const [index, cameraConfig] of camerasConfig.entries()) {
|
||||
const engineType = engineTypes[index];
|
||||
const engine = engineType
|
||||
? engines.get(engineType) ?? this._engineFactory.createEngine(engineType)
|
||||
: null;
|
||||
? engines.get(engineType) ?? this._engineFactory.createEngine(engineType)
|
||||
: null;
|
||||
if (!engine || !engineType) {
|
||||
throw new CameraInitializationError(
|
||||
localize('error.no_camera_engine'),
|
||||
@@ -180,6 +176,8 @@ export class CameraManager {
|
||||
entityRegistryManager: EntityRegistryManager,
|
||||
camerasConfig: CamerasConfig,
|
||||
): Promise<void> {
|
||||
const initializationStartTime = new Date();
|
||||
|
||||
const hasAutoTriggers = (config: CameraConfig): boolean => {
|
||||
return config.triggers.motion || config.triggers.occupancy;
|
||||
};
|
||||
@@ -229,6 +227,16 @@ export class CameraManager {
|
||||
if (!this._store.getVisibleCameraCount()) {
|
||||
throw new CameraInitializationError(localize('error.no_visible_cameras'));
|
||||
}
|
||||
|
||||
log(
|
||||
this._cardWideConfig,
|
||||
'Frigate Card CameraManager initialized (Cameras: ',
|
||||
camerasConfig,
|
||||
`, Duration: ${
|
||||
(new Date().getTime() - initializationStartTime.getTime()) / 1000
|
||||
}s,`,
|
||||
')',
|
||||
);
|
||||
}
|
||||
|
||||
public isInitialized(): boolean {
|
||||
|
||||
+4
-6
@@ -1063,16 +1063,14 @@ class FrigateCard extends LitElement {
|
||||
this._cardWideConfig,
|
||||
);
|
||||
|
||||
// For each camera merge the config into the camera global config. The
|
||||
// merging must happen in this order, to ensure that the defaults in the
|
||||
// cameras global config do not override the values specified in the
|
||||
// per-camera config.
|
||||
// For each camera merge the config (which has no defaults) into the camera
|
||||
// global config (which does have defaults). The merging must happen in this
|
||||
// order, to ensure that the defaults in the cameras global config do not
|
||||
// override the values specified in the per-camera config.
|
||||
const cameras = config.cameras.map((camera) =>
|
||||
merge(cloneDeep(config.cameras_global), camera),
|
||||
);
|
||||
|
||||
console.info("MERGED CAMERAS", cameras);
|
||||
|
||||
try {
|
||||
await this._cameraManager.initializeCameras(
|
||||
hass,
|
||||
|
||||
+8
-3
@@ -1282,9 +1282,14 @@ export interface CardWideConfig {
|
||||
* Main card config.
|
||||
*/
|
||||
export const frigateCardConfigSchema = z.object({
|
||||
// Main configuration sections.
|
||||
cameras: camerasConfigSchema,
|
||||
cameras_global: cameraConfigSchema.optional(),
|
||||
// Defaults are stripped out of the individual cameras, since each camera will
|
||||
// be merged with `cameras_global` which *does* have defaults. If we didn't do
|
||||
// this, the default values of each individual camera would override the
|
||||
// intentionally specified values in `cameras_global` during camera
|
||||
// initialization when the two configs are merged.
|
||||
cameras: deepRemoveDefaults(camerasConfigSchema),
|
||||
cameras_global: cameraConfigSchema,
|
||||
|
||||
view: viewConfigSchema,
|
||||
menu: menuConfigSchema,
|
||||
live: liveConfigSchema,
|
||||
|
||||
Reference in New Issue
Block a user