From 8b6fb77fe8a866e528e883f0ca751f702359c794 Mon Sep 17 00:00:00 2001 From: "swapnil.verma" Date: Mon, 4 Mar 2024 18:33:17 +0530 Subject: [PATCH] [ACS-6342] AppExtensionService now fetches extension state from BE on login --- .../src/lib/services/app-extension.service.ts | 14 ++++++++++++-- .../src/lib/services/extension.service.ts | 5 +++++ 2 files changed, 17 insertions(+), 2 deletions(-) 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