From b08db38e251bc8aadbd684185102f41c54845edf Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 26 Jan 2023 14:01:58 +0100 Subject: [PATCH] clean up --- .../dashboard-health-check.element.ts | 16 +++++----- .../health-check-dashboard.context.ts | 29 +++++++++++++------ .../views/health-check-overview.element.ts | 16 ++++------ 3 files changed, 32 insertions(+), 29 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/dashboard-health-check.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/dashboard-health-check.element.ts index b26100ed54..91fb021085 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/dashboard-health-check.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/dashboard-health-check.element.ts @@ -31,16 +31,14 @@ export class UmbDashboardHealthCheckElement extends UmbLitElement { }, ]; - private _healthCheckManifests: ManifestHealthCheck[] = []; + private _healthCheckDashboardContext = new UmbHealthCheckDashboardContext(this); - connectedCallback(): void { - super.connectedCallback(); - umbExtensionsRegistry.extensionsOfType('healthCheck').subscribe((healthChecks) => { - this._healthCheckManifests = healthChecks; - this.provideContext( - UMB_HEALTHCHECK_DASHBOARD_CONTEXT_TOKEN, - new UmbHealthCheckDashboardContext(this, this._healthCheckManifests) - ); + constructor() { + super(); + this.provideContext(UMB_HEALTHCHECK_DASHBOARD_CONTEXT_TOKEN, this._healthCheckDashboardContext); + + this.observe(umbExtensionsRegistry.extensionsOfType('healthCheck'), (healthCheckManifests) => { + this._healthCheckDashboardContext.manifests = healthCheckManifests; }); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/health-check-dashboard.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/health-check-dashboard.context.ts index 46c97d9b83..f4c41f1cbc 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/health-check-dashboard.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/health-check-dashboard.context.ts @@ -3,24 +3,35 @@ import type { ManifestHealthCheck } from '@umbraco-cms/models'; import { UmbContextToken } from '@umbraco-cms/context-api'; export class UmbHealthCheckDashboardContext { - public manifests: ManifestHealthCheck[] = []; + #manifests: ManifestHealthCheck[] = []; + set manifests(value: ManifestHealthCheck[]) { + this.#manifests = value; + this.#registerApis(); + } + get manifests() { + return this.#manifests; + } + public apis = new Map(); - public host: any; + public host: HTMLElement; - constructor(host: any, manifests: Array) { - this.manifests = manifests; + constructor(host: HTMLElement) { this.host = host; - - this.manifests.forEach((manifest) => { - this.apis.set(manifest.meta.label, new manifest.meta.api(this.host)); - }); } checkAll() { for (const [label, api] of this.apis.entries()) { - api.checkGroup(label); + api?.checkGroup?.(label); } } + + #registerApis() { + this.apis.clear(); + this.#manifests.forEach((manifest) => { + // the group name (label) is the unique key for a health check group + this.apis.set(manifest.meta.label, new manifest.meta.api(this.host)); + }); + } } export const UMB_HEALTHCHECK_DASHBOARD_CONTEXT_TOKEN = new UmbContextToken( diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/views/health-check-overview.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/views/health-check-overview.element.ts index 6968f0d5f6..6d2465b6f8 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/views/health-check-overview.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/views/health-check-overview.element.ts @@ -3,7 +3,10 @@ import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { UUIButtonState } from '@umbraco-ui/uui'; -import { UmbHealthCheckDashboardContext } from '../health-check-dashboard.context'; +import { + UmbHealthCheckDashboardContext, + UMB_HEALTHCHECK_DASHBOARD_CONTEXT_TOKEN, +} from '../health-check-dashboard.context'; import { UmbLitElement } from '@umbraco-cms/element'; import { ManifestHealthCheck } from '@umbraco-cms/extensions-registry'; @@ -30,24 +33,15 @@ export class UmbDashboardHealthCheckOverviewElement extends UmbLitElement { @state() private _buttonState: UUIButtonState; - private _healthCheckManifests: ManifestHealthCheck[] = []; - private _healthCheckDashboardContext?: UmbHealthCheckDashboardContext; constructor() { super(); - this.consumeContext('umbHealthCheckDashboard', (instance: UmbHealthCheckDashboardContext) => { + this.consumeContext(UMB_HEALTHCHECK_DASHBOARD_CONTEXT_TOKEN, (instance) => { this._healthCheckDashboardContext = instance; }); } - connectedCallback(): void { - super.connectedCallback(); - umbExtensionsRegistry.extensionsOfType('healthCheck').subscribe((healthChecks) => { - this._healthCheckManifests = healthChecks; - }); - } - private async _onHealthCheckHandler() { this._healthCheckDashboardContext?.checkAll(); }