From a8db88fdec53aaec320107f3b789523ca1cec2c7 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 20 Nov 2023 16:12:01 +0100 Subject: [PATCH] observe repo from manifest --- .../core/collection/collection.context.ts | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/collection/collection.context.ts b/src/Umbraco.Web.UI.Client/src/packages/core/collection/collection.context.ts index 0d2d5ad0fb..976ae9f7db 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/collection/collection.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/collection/collection.context.ts @@ -164,7 +164,8 @@ export class UmbCollectionContext< * @memberof UmbCollectionContext */ public async requestCollection() { - if (!this.repository) return; + await this.#init; + if (!this.repository) throw new Error(`Missing repository for ${this.#alias}`); const filter = this.#filter.getValue(); const { data } = await this.repository.requestCollection(filter); @@ -248,10 +249,24 @@ export class UmbCollectionContext< const repositoryAlias = manifest.meta.repositoryAlias; if (!repositoryAlias) throw new Error('A collection must have a repository alias.'); console.log(repositoryAlias); + this.#observeRepository(repositoryAlias); }, 'umbObserveCollectionManifest', ); } + + #observeRepository(repositoryAlias: string) { + new UmbExtensionApiInitializer>( + this, + umbExtensionsRegistry, + repositoryAlias, + [this._host], + (permitted, ctrl) => { + this.repository = permitted ? ctrl.api : undefined; + this.#checkIfInitialized(); + }, + ); + } } export const UMB_COLLECTION_CONTEXT = new UmbContextToken>('UmbCollectionContext');