Remove the MediaQuery wrapper from the camera manager.

This commit is contained in:
Dermot Duffy
2023-01-29 20:00:45 -08:00
parent 767d4ee7a0
commit 01c3a79ff1
9 changed files with 69 additions and 69 deletions
+15 -4
View File
@@ -15,6 +15,7 @@ import { HomeAssistant } from 'custom-card-helpers';
import { dispatchFrigateCardErrorEvent } from '../components/message';
import { MediaQueriesResults } from '../view/media-queries-results';
import { errorToConsole } from './basic';
import { MediaQuery } from '../camera-manager/types';
export const changeViewToRecentEventsForCameraAndDependents = async (
element: HTMLElement,
@@ -179,19 +180,29 @@ const executeMediaQueryForView = async (
targetTime?: Date;
},
): Promise<View | null> => {
let queryResults: MediaQueriesResults | null;
let mediaArray: ViewMedia[] | null;
const queries = query.getQueries();
if (!queries) {
return null;
}
try {
queryResults = await cameraManager.executeMediaQueries(hass, query);
mediaArray = await cameraManager.executeMediaQueries<MediaQuery>(hass, queries);
} catch (e) {
errorToConsole(e as Error);
dispatchFrigateCardErrorEvent(element, e as Error);
return null;
}
if (!mediaArray) {
return null;
}
const queryResults = new MediaQueriesResults(mediaArray);
let viewerContext: ViewContext | undefined = {};
const mediaArray = queryResults?.getResults();
if (queryResults && mediaArray && options?.targetTime && options.cameraIDs) {
if (options?.targetTime && options.cameraIDs) {
queryResults.selectBestResult((media) =>
findClosestMediaIndex(media, options.targetTime as Date, options.cameraIDs),
);
+12 -7
View File
@@ -7,9 +7,12 @@ import { ClipsOrSnapshotsOrAll, RecordingSegment } from '../types';
import { CameraManager } from '../camera-manager/manager';
import { EventQuery } from '../camera-manager/types';
import { capEndDate, convertRangeToCacheFriendlyTimes } from '../camera-manager/util';
import { EventMediaQueries } from '../view/media-queries';
import { ViewMedia } from '../view/media';
import { compressRanges, ExpiringMemoryRangeSet, MemoryRangeSet } from '../camera-manager/range';
import {
compressRanges,
ExpiringMemoryRangeSet,
MemoryRangeSet,
} from '../camera-manager/range';
import { errorToConsole, ModifyInterface } from './basic.js';
// Allow timeline freshness to be at least this number of seconds out of date
@@ -132,14 +135,13 @@ export class TimelineDataSource {
}
const cacheFriendlyWindow = this.getCacheFriendlyEventWindow(window);
const eventQueries = this.getTimelineEventQueries(cacheFriendlyWindow)
const eventQueries = this.getTimelineEventQueries(cacheFriendlyWindow);
if (!eventQueries) {
return;
}
const query = new EventMediaQueries(eventQueries);
const results = await this._cameraManager.executeMediaQueries(hass, query);
for (const media of results?.getResults() ?? []) {
const mediaArray = await this._cameraManager.executeMediaQueries(hass, eventQueries);
for (const media of mediaArray ?? []) {
const endTime = media.getEndTime();
const startTime = media.getStartTime();
const id = media.getID();
@@ -234,7 +236,10 @@ export class TimelineDataSource {
if (!recordingQueries) {
return;
}
const results = await this._cameraManager.getRecordingSegments(hass, recordingQueries);
const results = await this._cameraManager.getRecordingSegments(
hass,
recordingQueries,
);
const newSegments: Map<string, RecordingSegment[]> = new Map();
for (const [query, result] of results) {