From 6a5c3e3f5b65624acdb681cb43d9ffef85e964a2 Mon Sep 17 00:00:00 2001 From: Felipe Santos Date: Tue, 24 May 2022 13:59:24 -0300 Subject: [PATCH] Implement selectBestViewForNonFrigateCameras --- src/card.ts | 13 +++++-------- src/view.ts | 10 +++++----- 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/src/card.ts b/src/card.ts index 027088b9..e0a2f98c 100644 --- a/src/card.ts +++ b/src/card.ts @@ -1246,19 +1246,16 @@ export class FrigateCard extends LitElement { case 'camera_select': const camera = frigateCardAction.camera; if (this._cameras?.has(camera) && this._view) { - let targetView = + const targetView = this._getConfig().view.camera_select === 'current' ? this._view.view : (this._getConfig().view.camera_select as FrigateCardView); - // Fallback to supported views for non-Frigate cameras. - if (!this._cameras?.get(camera)?.camera_name) { - targetView = View.supportsNonFrigateCameras(targetView) - ? targetView - : 'live'; - } this._changeView({ view: new View({ - view: targetView, + view: this._cameras?.get(camera)?.camera_name + ? targetView + : // Fallback to supported views for non-Frigate cameras. + View.selectBestViewForNonFrigateCameras(targetView), camera: camera, }), }); diff --git a/src/view.ts b/src/view.ts index bb01afc4..86bcda83 100644 --- a/src/view.ts +++ b/src/view.ts @@ -36,12 +36,12 @@ export class View { } /** - * Determines whether a view is supported on non-Frigate cameras. - * @param view The view to determine support for. - * @returns Whether the view is supported by non-Frigate cameras. + * Selects the best view for a non-Frigate camera. + * @param view The wanted view. + * @returns The closest view supported by the non-Frigate camera. */ - public static supportsNonFrigateCameras(view: FrigateCardView): boolean { - return ['timeline', 'image', 'live'].includes(view); + public static selectBestViewForNonFrigateCameras(view: FrigateCardView) { + return ['timeline', 'image'].includes(view) ? view : 'live'; } /**