Files
advanced-camera-card/src/camera-manager/entity-camera.ts
T

31 lines
1.0 KiB
TypeScript

import { Entity, EntityRegistryManager } from '../ha/registry/entity/types';
import { Camera, CameraInitializationOptions } from './camera';
import { CameraNoEntityError } from './error';
import { getCameraEntityFromConfig } from './utils/camera-entity-from-config';
export interface EntityCameraInitializationOptions extends CameraInitializationOptions {
entityRegistryManager: EntityRegistryManager;
}
export class EntityCamera extends Camera {
protected _entity: Entity | null = null;
public async initialize(options: EntityCameraInitializationOptions): Promise<Camera> {
const config = this.getConfig();
const cameraEntityID = getCameraEntityFromConfig(config);
const entity = cameraEntityID
? await options.entityRegistryManager.getEntity(options.hass, cameraEntityID)
: null;
if (!entity || !cameraEntityID) {
throw new CameraNoEntityError(config);
}
this._entity = entity;
return await super.initialize(options);
}
public getEntity(): Entity | null {
return this._entity;
}
}