From 2277726a22178718403e5a00ee28eae5df2a35e8 Mon Sep 17 00:00:00 2001 From: Dermot Duffy Date: Mon, 10 Jan 2022 22:23:24 -0800 Subject: [PATCH] Add automatic provider detection. --- src/components/live.ts | 22 ++++++++++++++++++++-- src/editor.ts | 1 + src/localize/languages/en.json | 1 + src/types.ts | 5 +++-- 4 files changed, 25 insertions(+), 4 deletions(-) diff --git a/src/components/live.ts b/src/components/live.ts index 644819bc..cdeb07ea 100644 --- a/src/components/live.ts +++ b/src/components/live.ts @@ -19,6 +19,8 @@ import { WebRTCConfig, FrigateCardError, LiveOverrides, + LiveProvider, + frigateCardConfigDefaults, } from '../types.js'; import { EmblaOptionsType } from 'embla-carousel'; import { HomeAssistant } from 'custom-card-helpers'; @@ -503,6 +505,20 @@ export class FrigateCardLiveProvider extends LitElement { @property({ attribute: true, type: Boolean }) public disabled = false; + protected _getResolvedProvider(): LiveProvider { + if (this.liveConfig?.provider === 'auto') { + if (this.cameraConfig?.webrtc?.entity || this.cameraConfig?.webrtc?.url) { + return 'webrtc'; + } else if (this.cameraConfig?.camera_entity) { + return 'frigate'; + } else if (this.cameraConfig?.camera_name) { + return 'frigate-jsmpeg'; + } + return frigateCardConfigDefaults.live.provider; + } + return this.liveConfig?.provider || frigateCardConfigDefaults.live.provider; + } + /** * Master render method. * @returns A rendered template. @@ -512,14 +528,16 @@ export class FrigateCardLiveProvider extends LitElement { return; } + const provider = this._getResolvedProvider(); + return html` - ${this.liveConfig.provider == 'frigate' + ${provider == 'frigate' ? html` ` - : this.liveConfig.provider == 'webrtc' + : provider == 'webrtc' ? html`