Get camera name the correct way.

This commit is contained in:
Dermot Duffy
2023-01-29 16:07:56 -08:00
parent 49e5cc5c5e
commit eed436d77f
6 changed files with 18 additions and 6 deletions
+2
View File
@@ -58,12 +58,14 @@ export interface CameraManagerEngine {
): Promise<RecordingSegmentsQueryResultsMap | null>;
generateMediaFromEvents(
hass: HomeAssistant,
cameras: Map<string, CameraConfig>,
query: EventQuery,
results: QueryReturnType<EventQuery>,
): ViewMedia[] | null;
generateMediaFromRecordings(
hass: HomeAssistant,
cameras: Map<string, CameraConfig>,
query: RecordingQuery,
results: QueryReturnType<RecordingQuery>,
+3
View File
@@ -490,6 +490,7 @@ export class FrigateCameraManagerEngine implements CameraManagerEngine {
}
public generateMediaFromEvents(
_hass: HomeAssistant,
cameras: Map<string, CameraConfig>,
query: EventQuery,
results: QueryReturnType<EventQuery>,
@@ -542,6 +543,7 @@ export class FrigateCameraManagerEngine implements CameraManagerEngine {
}
public generateMediaFromRecordings(
hass: HomeAssistant,
cameras: Map<string, CameraConfig>,
_query: RecordingQuery,
results: QueryReturnType<RecordingQuery>,
@@ -557,6 +559,7 @@ export class FrigateCameraManagerEngine implements CameraManagerEngine {
continue;
}
const media = FrigateViewMediaFactory.createRecordingViewMedia(
hass,
recording.cameraID,
recording,
cameraConfig,
+3 -1
View File
@@ -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),
);
}
}
+5 -2
View File
@@ -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,
)}`;
};
+5 -2
View File
@@ -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<QT extends DataQuery>(
hass: HomeAssistant,
results: ResultsMap<QT>,
): 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);
-1
View File
@@ -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.