diff --git a/src/camera/engine.ts b/src/camera/engine.ts index 646821a4..a090bb8f 100644 --- a/src/camera/engine.ts +++ b/src/camera/engine.ts @@ -58,12 +58,14 @@ export interface CameraManagerEngine { ): Promise; generateMediaFromEvents( + hass: HomeAssistant, cameras: Map, query: EventQuery, results: QueryReturnType, ): ViewMedia[] | null; generateMediaFromRecordings( + hass: HomeAssistant, cameras: Map, query: RecordingQuery, results: QueryReturnType, diff --git a/src/camera/frigate/engine-frigate.ts b/src/camera/frigate/engine-frigate.ts index 96f727b6..90326cd3 100644 --- a/src/camera/frigate/engine-frigate.ts +++ b/src/camera/frigate/engine-frigate.ts @@ -490,6 +490,7 @@ export class FrigateCameraManagerEngine implements CameraManagerEngine { } public generateMediaFromEvents( + _hass: HomeAssistant, cameras: Map, query: EventQuery, results: QueryReturnType, @@ -542,6 +543,7 @@ export class FrigateCameraManagerEngine implements CameraManagerEngine { } public generateMediaFromRecordings( + hass: HomeAssistant, cameras: Map, _query: RecordingQuery, results: QueryReturnType, @@ -557,6 +559,7 @@ export class FrigateCameraManagerEngine implements CameraManagerEngine { continue; } const media = FrigateViewMediaFactory.createRecordingViewMedia( + hass, recording.cameraID, recording, cameraConfig, diff --git a/src/camera/frigate/media.ts b/src/camera/frigate/media.ts index 46fd38ad..196ba49f 100644 --- a/src/camera/frigate/media.ts +++ b/src/camera/frigate/media.ts @@ -1,3 +1,4 @@ +import { HomeAssistant } from 'custom-card-helpers'; import fromUnixTime from 'date-fns/fromUnixTime'; import isEqual from 'lodash-es/isEqual'; import { CameraConfig } from '../../types'; @@ -155,6 +156,7 @@ export class FrigateViewMediaFactory { } static createRecordingViewMedia( + hass: HomeAssistant, cameraID: string, recording: FrigateRecording, cameraConfig: CameraConfig, @@ -173,7 +175,7 @@ export class FrigateViewMediaFactory { cameraConfig.frigate.camera_name, recording, ), - getRecordingTitle(cameraConfig, recording), + getRecordingTitle(hass, cameraConfig, recording), ); } } diff --git a/src/camera/frigate/util.ts b/src/camera/frigate/util.ts index 08debd95..fe8d6075 100644 --- a/src/camera/frigate/util.ts +++ b/src/camera/frigate/util.ts @@ -1,6 +1,8 @@ +import { HomeAssistant } from 'custom-card-helpers'; import utcToZonedTime from 'date-fns-tz/utcToZonedTime'; import { CameraConfig, ClipsOrSnapshots } from '../../types'; import { formatDateAndTime, prettifyTitle } from '../../utils/basic'; +import { getCameraTitle } from '../../utils/camera'; import { FrigateEvent, FrigateRecording } from './types'; /** @@ -22,11 +24,12 @@ export const getEventTitle = (event: FrigateEvent): string => { }; export const getRecordingTitle = ( + hass: HomeAssistant, cameraConfig: CameraConfig, recording: FrigateRecording, ): string => { - const cameraName = prettifyTitle(cameraConfig.frigate.camera_name ?? ''); - return `${cameraName ? `${cameraName} ` : ''}${formatDateAndTime( + const cameraTitle = getCameraTitle(hass, cameraConfig); + return `${cameraTitle ? `${cameraTitle} ` : ''}${formatDateAndTime( recording.startTime, )}`; }; diff --git a/src/camera/manager.ts b/src/camera/manager.ts index 6738c7da..0017b059 100644 --- a/src/camera/manager.ts +++ b/src/camera/manager.ts @@ -236,6 +236,7 @@ export class CameraManager { return null; } const mediaArray = this._convertQueryResultsToMedia( + hass, await this._handleQuery(hass, queries), ); @@ -294,6 +295,7 @@ export class CameraManager { } const newChunkMedia = this._convertQueryResultsToMedia( + hass, await this._handleQuery(hass, newChunkQueries), ); @@ -498,6 +500,7 @@ export class CameraManager { } protected _convertQueryResultsToMedia( + hass: HomeAssistant, results: ResultsMap, ): ViewMedia[] { const mediaArray: ViewMedia[] = []; @@ -510,12 +513,12 @@ export class CameraManager { QueryClassifier.isEventQuery(query) && QueryResultClassifier.isEventQueryResult(result) ) { - media = engine.generateMediaFromEvents(this._cameras, query, result); + media = engine.generateMediaFromEvents(hass, this._cameras, query, result); } else if ( QueryClassifier.isRecordingQuery(query) && QueryResultClassifier.isRecordingQuery(result) ) { - media = engine.generateMediaFromRecordings(this._cameras, query, result); + media = engine.generateMediaFromRecordings(hass, this._cameras, query, result); } if (media) { mediaArray.push(...media); diff --git a/src/view/view.ts b/src/view/view.ts index 847f3a17..77482d66 100644 --- a/src/view/view.ts +++ b/src/view/view.ts @@ -1,6 +1,5 @@ // Minor / later: // - TODO: ts-prune https://camchenry.com/blog/deleting-dead-code-in-typescript -// - TODO: getRecordingTitle should use getCameraTitle but need hass. // - TODO: Take MediaQueries wrappers out of the camera manager. // - TODO: View a media in the gallery from September, then notice timeline missing the item.