fix: Configured PTZ actions should overrule auto-detected actions (not merge with them) (#1558)

* fix: Configured PTZ actions should overrule auto-detected actions (not merge with them)

* Don't populate capabilities unless there is some basis
This commit is contained in:
Dermot Duffy
2024-09-21 18:32:40 -07:00
committed by GitHub
parent 7fd6bc6bee
commit c225a9aeab
6 changed files with 31 additions and 30 deletions
+7 -10
View File
@@ -4,10 +4,7 @@ import { StateWatcherSubscriptionInterface } from '../../card-controller/hass/st
import { CameraConfig } from '../../config/types';
import { localize } from '../../localize/localize';
import { PTZCapabilities, PTZMovementType } from '../../types';
import {
errorToConsole,
recursivelyMergeObjectsConcatenatingArraysUniquely,
} from '../../utils/basic';
import { errorToConsole } from '../../utils/basic';
import { EntityRegistryManager } from '../../utils/ha/entity-registry';
import { Entity } from '../../utils/ha/entity-registry/types';
import { Camera, CameraInitializationOptions } from '../camera';
@@ -125,13 +122,13 @@ export class FrigateCamera extends Camera {
const configPTZCapabilities = getPTZCapabilitiesFromCameraConfig(this.getConfig());
const frigatePTZCapabilities = await this._getPTZCapabilities(hass, config);
const combinedPTZCapabilities =
const combinedPTZCapabilities: PTZCapabilities | null =
configPTZCapabilities || frigatePTZCapabilities
? recursivelyMergeObjectsConcatenatingArraysUniquely(
{},
configPTZCapabilities,
frigatePTZCapabilities,
)
? {
...frigatePTZCapabilities,
...configPTZCapabilities,
}
: null;
const birdseye = isBirdseye(config);
+9 -7
View File
@@ -70,13 +70,15 @@ export const getPTZCapabilitiesFromCameraConfig = (
zoomOut?.length ||
presets?.length
? {
left: left ?? undefined,
right: right ?? undefined,
up: up ?? undefined,
down: down ?? undefined,
zoomIn: zoomIn ?? undefined,
zoomOut: zoomOut ?? undefined,
presets: presets,
// Only return keys with some capability (to aid with action merging
// later).
...(left ? { left } : {}),
...(right ? { right } : {}),
...(up ? { up } : {}),
...(down ? { down } : {}),
...(zoomIn ? { zoomIn } : {}),
...(zoomOut ? { zoomOut } : {}),
...(presets ? { presets } : {}),
}
: null;
};