Rip out unnecessary view media templating.

This commit is contained in:
Dermot Duffy
2023-01-24 19:36:54 -08:00
parent 09c38d96f6
commit 7896dfeb3c
4 changed files with 52 additions and 46 deletions
+43 -30
View File
@@ -1,7 +1,12 @@
import fromUnixTime from 'date-fns/fromUnixTime';
import isEqual from 'lodash-es/isEqual';
import { CameraConfig } from '../../types';
import { ViewMediaBase, EventViewMedia, RecordingViewMedia } from '../../view/media';
import {
ViewMedia,
EventViewMedia,
RecordingViewMedia,
ViewMediaType,
} from '../../view/media';
import { FrigateEvent, FrigateRecording } from './types';
import {
getEventMediaContentID,
@@ -11,22 +16,26 @@ import {
getRecordingTitle,
} from './util';
export class FrigateEventViewMedia
extends ViewMediaBase<FrigateEvent>
implements EventViewMedia<FrigateEvent>
{
export class FrigateEventViewMedia extends ViewMedia implements EventViewMedia {
protected _event: FrigateEvent;
constructor(mediaType: ViewMediaType, cameraID: string, event: FrigateEvent) {
super(mediaType, cameraID);
this._event = event;
}
public hasClip(): boolean {
return !!this._source.has_clip;
return !!this._event.has_clip;
}
public getStartTime(): Date {
return fromUnixTime(this._source.start_time);
return fromUnixTime(this._event.start_time);
}
public getEndTime(): Date | null {
return this._source.end_time ? fromUnixTime(this._source.end_time) : null;
return this._event.end_time ? fromUnixTime(this._event.end_time) : null;
}
// eslint-disable-next-line @typescript-eslint/no-unused-vars
public getID(_cameraConfig?: CameraConfig): string {
return this._source.id;
return this._event.id;
}
public getContentID(cameraConfig?: CameraConfig): string | null {
if (
@@ -39,41 +48,41 @@ export class FrigateEventViewMedia
return getEventMediaContentID(
cameraConfig.frigate.client_id,
cameraConfig.frigate.camera_name,
this._source,
this._event,
this._mediaType === 'clip' ? 'clips' : 'snapshots',
);
}
// eslint-disable-next-line @typescript-eslint/no-unused-vars
public getTitle(_cameraConfig?: CameraConfig): string | null {
return getEventTitle(this._source);
return getEventTitle(this._event);
}
public getThumbnail(cameraConfig?: CameraConfig): string | null {
if (cameraConfig?.frigate.client_id) {
return getEventThumbnailURL(cameraConfig.frigate.client_id, this._source);
return getEventThumbnailURL(cameraConfig.frigate.client_id, this._event);
}
return null;
}
public isFavorite(): boolean | null {
return this._source.retain_indefinitely ?? null;
return this._event.retain_indefinitely ?? null;
}
public setFavorite(favorite: boolean): void {
this._source.retain_indefinitely = favorite;
this._event.retain_indefinitely = favorite;
}
public getWhat(): string[] | null {
return [this._source.label];
return [this._event.label];
}
public getWhere(): string[] | null {
const zones = this._source.zones;
const zones = this._event.zones;
return zones.length ? zones : null;
}
public getScore(): number | null {
return this._source.top_score;
return this._event.top_score;
}
// eslint-disable-next-line @typescript-eslint/no-unused-vars
public isGroupableWith(that: EventViewMedia<unknown>): boolean {
public isGroupableWith(that: EventViewMedia): boolean {
return (
this.getMediaType() === that.getMediaType() &&
isEqual(this.getWhere(), that.getWhere()) &&
@@ -81,22 +90,26 @@ export class FrigateEventViewMedia
);
}
public getClipEquivalent(): EventViewMedia<FrigateEvent> | null {
public getClipEquivalent(): EventViewMedia | null {
if (!this.hasClip()) {
return null;
}
return FrigateViewMediaFactory.createEventViewMedia(
'clip',
this._cameraID,
this._source,
this._event,
);
}
}
export class FrigateRecordingViewMedia
extends ViewMediaBase<FrigateRecording>
implements RecordingViewMedia<FrigateRecording>
{
export class FrigateRecordingViewMedia extends ViewMedia implements RecordingViewMedia {
protected _recording: FrigateRecording;
constructor(mediaType: ViewMediaType, cameraID: string, recording: FrigateRecording) {
super(mediaType, cameraID);
this._recording = recording;
}
public getID(cameraConfig?: CameraConfig): string | null {
// ID name is derived from the real camera name (not CameraID) since the
// recordings for the same camera across multiple zones will be the same and
@@ -104,15 +117,15 @@ export class FrigateRecordingViewMedia
if (cameraConfig) {
return `${cameraConfig.frigate?.client_id ?? ''}/${
cameraConfig.frigate.camera_name ?? ''
}/${this._source.startTime.getTime()}/${this._source.endTime.getTime()}}`;
}/${this._recording.startTime.getTime()}/${this._recording.endTime.getTime()}}`;
}
return null;
}
public getStartTime(): Date {
return this._source.startTime;
return this._recording.startTime;
}
public getEndTime(): Date {
return this._source.endTime;
return this._recording.endTime;
}
public getContentID(cameraConfig?: CameraConfig): string | null {
if (
@@ -125,7 +138,7 @@ export class FrigateRecordingViewMedia
return getRecordingMediaContentID(
cameraConfig.frigate.client_id,
cameraConfig.frigate.camera_name,
this._source,
this._recording,
);
}
// eslint-disable-next-line @typescript-eslint/no-unused-vars
@@ -133,10 +146,10 @@ export class FrigateRecordingViewMedia
if (!cameraConfig) {
return null;
}
return getRecordingTitle(cameraConfig, this._source);
return getRecordingTitle(cameraConfig, this._recording);
}
public getEventCount(): number {
return this._source.events;
return this._recording.events;
}
}