diff --git a/lib/extensions/src/lib/services/app-extension.service.ts b/lib/extensions/src/lib/services/app-extension.service.ts index 3b26d6994d..082f54ef86 100644 --- a/lib/extensions/src/lib/services/app-extension.service.ts +++ b/lib/extensions/src/lib/services/app-extension.service.ts @@ -18,9 +18,10 @@ import { Injectable } from '@angular/core'; import { ExtensionConfig, ExtensionRef } from '../config/extension.config'; import { ExtensionService } from '../services/extension.service'; -import { Observable, BehaviorSubject } from 'rxjs'; +import { Observable, BehaviorSubject, from } from 'rxjs'; import { ViewerExtensionRef } from '../config/viewer.extensions'; import { DocumentListPresetRef } from '../config/document-list.extensions'; +import { AlfrescoApiService, AppConfigService, AuthenticationService } from '@alfresco/adf-core'; @Injectable({ providedIn: 'root' @@ -29,8 +30,17 @@ export class AppExtensionService { references$: Observable; private _references = new BehaviorSubject([]); - constructor(protected extensionService: ExtensionService) { + constructor(protected extensionService: ExtensionService, authenticationService: AuthenticationService, appConfigService: AppConfigService, apiService: AlfrescoApiService) { this.references$ = this._references.asObservable(); + + authenticationService.onLogin.subscribe(() => { + const instanceId = appConfigService.get('instanceId', '1234'); + + const requestParams = [{}, {}, {}, {}, {}, ['application/json'], ['application/json']]; + from(apiService.getInstance().contentClient.callApi(`/settings/${instanceId}`, 'GET', ...requestParams)).subscribe((pluginConfig) => { + extensionService.appendConfig(pluginConfig.entry); + }); + }); } async load() { diff --git a/lib/extensions/src/lib/services/extension.service.ts b/lib/extensions/src/lib/services/extension.service.ts index 79658cab53..6e4b58f1c7 100644 --- a/lib/extensions/src/lib/services/extension.service.ts +++ b/lib/extensions/src/lib/services/extension.service.ts @@ -109,6 +109,11 @@ export class ExtensionService { return config; } + appendConfig(partialConfig: ExtensionConfig) { + this.config = { ...this.config, ...partialConfig }; + this.setup(this.config); + } + /** * Registers extensions from a config object. * @param config Object with config data