From 3d7406045606be3eb9eaaf80b7306494044c260a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Tue, 5 Nov 2024 22:17:33 +0100 Subject: [PATCH] fix infinite layout update --- .../controller/base-extension-initializer.controller.ts | 7 ++++++- .../block/block/workspace/block-workspace.context.ts | 5 +++++ 2 files changed, 11 insertions(+), 1 deletion(-) 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 d425586bd2..52cff378b7 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 @@ -250,6 +250,11 @@ export abstract class UmbBaseExtensionInitializer< } #onConditionsChangedCallback = async () => { + if (this.#manifest === undefined) { + // This is cause by this controller begin destroyed in the mean time. [NL] + // When writing this the only plausible case is a call from the conditionController to the onChange callback. + return; + } // We will collect old value here, but we need to re-collect it after a async method have been called, as it could have changed in the mean time. [NL] let oldValue = this.#isPermitted ?? false; @@ -299,7 +304,7 @@ export abstract class UmbBaseExtensionInitializer< protected abstract _conditionsAreBad(): Promise; public equal(otherClass: UmbBaseExtensionInitializer | undefined): boolean { - return otherClass?.manifest === this.manifest; + return otherClass?.manifest === this.#manifest; } /* diff --git a/src/Umbraco.Web.UI.Client/src/packages/block/block/workspace/block-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/packages/block/block/workspace/block-workspace.context.ts index 31cf151c32..1d1827445b 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/block/block/workspace/block-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/block/block/workspace/block-workspace.context.ts @@ -348,10 +348,15 @@ export class UmbBlockWorkspaceContext { if (layoutData) { + if (initialLayoutSet) { + initialLayoutSet = false; + return; + } this.#blockManager?.setOneLayout( layoutData, this.#modalContext?.data.originData as UmbBlockWorkspaceOriginData,