Get camera name the correct way.
This commit is contained in:
@@ -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>,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
)}`;
|
||||
};
|
||||
|
||||
@@ -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,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.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user