refactor: Cache device information centrally (#1598)

This commit is contained in:
Dermot Duffy
2024-09-29 17:17:40 -07:00
committed by GitHub
parent 02fb6e1d4c
commit 9393722fa6
14 changed files with 281 additions and 93 deletions
+9 -1
View File
@@ -6,12 +6,16 @@ import { localize } from '../localize/localize';
import basicBlockStyle from '../scss/basic-block.scss';
import { Diagnostics, getDiagnostics } from '../utils/diagnostics';
import { renderMessage } from './message';
import { DeviceRegistryManager } from '../utils/ha/registry/device';
@customElement('frigate-card-diagnostics')
export class FrigateCardDiagnostics extends LitElement {
@property({ attribute: false })
public hass?: HomeAssistant;
@property({ attribute: false })
public deviceRegistryManager?: DeviceRegistryManager;
@property({ attribute: false })
public rawConfig?: RawFrigateCardConfig;
@@ -19,7 +23,11 @@ export class FrigateCardDiagnostics extends LitElement {
protected _diagnostics: Diagnostics | null = null;
protected async _fetchDiagnostics(): Promise<void> {
this._diagnostics = await getDiagnostics(this.hass, this.rawConfig);
this._diagnostics = await getDiagnostics(
this.hass,
this.deviceRegistryManager,
this.rawConfig,
);
}
protected shouldUpdate(): boolean {
+7 -1
View File
@@ -19,9 +19,11 @@ import {
} from '../config/types.js';
import viewsStyle from '../scss/views.scss';
import { ExtendedHomeAssistant } from '../types.js';
import { DeviceRegistryManager } from '../utils/ha/registry/device/index.js';
import { ResolvedMediaCache } from '../utils/ha/resolved-media.js';
// As a special case: Diagnostics is not dynamically loaded in case something goes wrong.
// As a special case: The diagnostics view is not dynamically loaded in case
// something goes wrong.
import './diagnostics.js';
@customElement('frigate-card-views')
@@ -62,6 +64,9 @@ export class FrigateCardViews extends LitElement {
@property({ attribute: false })
public triggeredCameraIDs?: Set<string>;
@property({ attribute: false })
public deviceRegistryManager?: DeviceRegistryManager;
protected willUpdate(changedProps: PropertyValues): void {
if (changedProps.has('viewManagerEpoch') || changedProps.has('config')) {
const view = this.viewManagerEpoch?.manager.getView();
@@ -215,6 +220,7 @@ export class FrigateCardViews extends LitElement {
? html` <frigate-card-diagnostics
.hass=${this.hass}
.rawConfig=${this.rawConfig}
.deviceRegistryManager=${this.deviceRegistryManager}
>
</frigate-card-diagnostics>`
: ``}