Refactor media classifiers.

This commit is contained in:
Dermot Duffy
2023-01-24 19:36:54 -08:00
parent 0f5f5b7ddf
commit 1762b5530f
9 changed files with 115 additions and 174 deletions
+18 -33
View File
@@ -1,5 +1,10 @@
import { ModifyInterface } from '../utils/basic.js';
import { ViewMedia, FrigateEventViewMedia, FrigateRecordingViewMedia } from './media';
import {
ViewMedia,
FrigateEventViewMedia,
FrigateRecordingViewMedia,
RecordingViewMedia,
EventViewMedia,
} from './media';
export class ViewMediaClassifier {
public static isFrigateMedia(
@@ -15,39 +20,19 @@ export class ViewMediaClassifier {
): media is FrigateRecordingViewMedia {
return media instanceof FrigateRecordingViewMedia;
}
// Typescript conveniences.
public static isMediaWithStartEndTime(media: ViewMedia): media is ModifyInterface<
ViewMedia,
{
getStartTime(): Date;
getEndTime(): Date;
}
> {
return !!media.getStartTime() && !!media.getEndTime();
public static isEvent(media: ViewMedia): media is EventViewMedia {
return this.isClip(media) || this.isSnapshot(media);
}
public static isMediaWithStartTime(media: ViewMedia): media is ModifyInterface<
ViewMedia,
{
getStartTime(): Date;
}
> {
return !!media.getStartTime();
public static isRecording(media: ViewMedia): media is RecordingViewMedia {
return media.getMediaType() === 'recording';
}
public static isMediaWithEndTime(media: ViewMedia): media is ModifyInterface<
ViewMedia,
{
getEndTime(): Date;
}
> {
return !!media.getEndTime();
public static isClip(media: ViewMedia): boolean {
return media.getMediaType() === 'clip';
}
public static isMediaWithID(media: ViewMedia): media is ModifyInterface<
ViewMedia,
{
getID(): string;
}
> {
return !!media.getID();
public static isSnapshot(media: ViewMedia): boolean {
return media.getMediaType() === 'snapshot';
}
public static isVideo(media: ViewMedia): boolean {
return this.isClip(media) || this.isRecording(media);
}
}