Merge pull request #999 from dermotduffy/webrtc-disconnect

Fix issues on DOM disconnect for certain live providers
This commit is contained in:
Dermot Duffy
2023-03-08 19:39:13 -08:00
committed by GitHub
2 changed files with 23 additions and 3 deletions
+15 -3
View File
@@ -101,6 +101,18 @@ export class FrigateCardGo2RTC extends LitElement implements FrigateCardMediaPla
} }
} }
disconnectedCallback(): void {
this._player = undefined;
}
connectedCallback(): void {
super.connectedCallback();
// Reset the player when reconnected to the DOM.
// https://github.com/dermotduffy/frigate-hass-card/issues/996
this.requestUpdate();
}
protected async _createPlayer(): Promise<void> { protected async _createPlayer(): Promise<void> {
if (!this.hass) { if (!this.hass) {
return; return;
@@ -126,8 +138,8 @@ export class FrigateCardGo2RTC extends LitElement implements FrigateCardMediaPla
this._player = new FrigateCardGo2RTCPlayer(); this._player = new FrigateCardGo2RTCPlayer();
this._player.src = address; this._player.src = address;
this._player.visibilityCheck = false; this._player.visibilityCheck = false;
this._player.background = true;
if (this.cameraConfig?.go2rtc?.modes) { if (this.cameraConfig?.go2rtc?.modes && this.cameraConfig.go2rtc.modes.length) {
this._player.mode = this.cameraConfig.go2rtc.modes.join(','); this._player.mode = this.cameraConfig.go2rtc.modes.join(',');
} }
@@ -135,7 +147,7 @@ export class FrigateCardGo2RTC extends LitElement implements FrigateCardMediaPla
} }
protected willUpdate(changedProps: PropertyValues): void { protected willUpdate(changedProps: PropertyValues): void {
if (changedProps.has('cameraEndpoints')) { if (!this._player || changedProps.has('cameraEndpoints')) {
this._createPlayer(); this._createPlayer();
} }
} }
+8
View File
@@ -73,6 +73,14 @@ export class FrigateCardLiveWebRTCCard
} }
} }
connectedCallback(): void {
super.connectedCallback();
// Reset the player when reconnected to the DOM.
// https://github.com/dermotduffy/frigate-hass-card/issues/996
this.requestUpdate();
}
/** /**
* Get the underlying video player. * Get the underlying video player.
* @returns The player or `null` if not found. * @returns The player or `null` if not found.