From e30a1891d3d1f5f4e0ca4fe1ae579a3d4d43ae0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Wed, 10 Apr 2024 22:12:49 +0200 Subject: [PATCH] make sure to clean up --- .../controller/base-extension-initializer.controller.ts | 6 ++++++ .../extension-with-api-slot.element.ts | 1 + 2 files changed, 7 insertions(+) diff --git a/src/Umbraco.Web.UI.Client/src/libs/extension-api/controller/base-extension-initializer.controller.ts b/src/Umbraco.Web.UI.Client/src/libs/extension-api/controller/base-extension-initializer.controller.ts index 26aefae6ac..f6efb9bfb4 100644 --- a/src/Umbraco.Web.UI.Client/src/libs/extension-api/controller/base-extension-initializer.controller.ts +++ b/src/Umbraco.Web.UI.Client/src/libs/extension-api/controller/base-extension-initializer.controller.ts @@ -176,6 +176,12 @@ export abstract class UmbBaseExtensionInitializer< configsOfThisType.map((conditionConfig) => this.#createConditionController(conditionManifest, conditionConfig)), ); + // If we got destroyed in the mean time, then we don't need to continue: + if (!this.#extensionRegistry) { + newConditionControllers.forEach((controller) => controller?.destroy()); + return; + } + const oldLength = this.#conditionControllers.length; newConditionControllers diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/components/extension-with-api-slot/extension-with-api-slot.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/components/extension-with-api-slot/extension-with-api-slot.element.ts index 9bfc2ab033..d1c35b7e9c 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/components/extension-with-api-slot/extension-with-api-slot.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/components/extension-with-api-slot/extension-with-api-slot.element.ts @@ -153,6 +153,7 @@ export class UmbExtensionWithApiSlotElement extends UmbLitElement { } #observeExtensions(): void { + // We want to be attached before we start observing extensions, cause first at this point we know that we got the right properties. [NL] if (!this.#attached) return; this.#extensionsController?.destroy(); if (this.#type) {