From e56331fecb6c405d46b17ec5959d1601bc6608eb Mon Sep 17 00:00:00 2001 From: Maurizio Vitale Date: Thu, 16 Apr 2020 17:23:00 +0100 Subject: [PATCH] [ACA-2948] Add API to fetch the bpm properties (#5610) * Add the api to fetch the bpm properties * remove useless map * Use latest api * Use the BehaviorSubject * filter the status true --- lib/core/mock/alfresco-api.service.mock.ts | 2 +- lib/core/services/alfresco-api.service.ts | 8 +-- .../services/discovery-api.service.spec.ts | 50 +++++++++++++++++ lib/core/services/discovery-api.service.ts | 15 +++++ lib/core/services/user-preferences.service.ts | 4 +- package-lock.json | 56 ++++++++++--------- package.json | 18 +++--- 7 files changed, 112 insertions(+), 41 deletions(-) diff --git a/lib/core/mock/alfresco-api.service.mock.ts b/lib/core/mock/alfresco-api.service.mock.ts index ade5d48df3..8839d2adb6 100644 --- a/lib/core/mock/alfresco-api.service.mock.ts +++ b/lib/core/mock/alfresco-api.service.mock.ts @@ -34,7 +34,7 @@ export class AlfrescoApiServiceMock extends AlfrescoApiService { initialize(): Promise { return new Promise((resolve) => { - this.alfrescoApiInitializedSubject.next(); + this.alfrescoApiInitializedSubject.next(true); resolve(); }); } diff --git a/lib/core/services/alfresco-api.service.ts b/lib/core/services/alfresco-api.service.ts index c0ec11fdc7..e57655e62f 100644 --- a/lib/core/services/alfresco-api.service.ts +++ b/lib/core/services/alfresco-api.service.ts @@ -25,7 +25,7 @@ import { AlfrescoApiCompatibility, AlfrescoApiConfig } from '@alfresco/js-api'; import { AppConfigService, AppConfigValues } from '../app-config/app-config.service'; -import { Subject, Observable } from 'rxjs'; +import { Subject, Observable, BehaviorSubject } from 'rxjs'; import { OauthConfigModel } from '../models/oauth-config.model'; import { StorageService } from './storage.service'; @@ -40,7 +40,7 @@ export class AlfrescoApiService { */ nodeUpdated = new Subject(); - protected alfrescoApiInitializedSubject: Subject; + protected alfrescoApiInitializedSubject: BehaviorSubject; alfrescoApiInitialized: Observable; protected alfrescoApi: AlfrescoApiCompatibility; @@ -102,7 +102,7 @@ export class AlfrescoApiService { constructor( protected appConfig: AppConfigService, protected storageService: StorageService) { - this.alfrescoApiInitializedSubject = new Subject(); + this.alfrescoApiInitializedSubject = new BehaviorSubject(null); this.alfrescoApiInitialized = this.alfrescoApiInitializedSubject.asObservable(); } @@ -110,7 +110,7 @@ export class AlfrescoApiService { await this.appConfig.load().then(() => { this.storageService.prefix = this.appConfig.get(AppConfigValues.STORAGE_PREFIX, ''); this.initAlfrescoApi(); - this.alfrescoApiInitializedSubject.next(); + this.alfrescoApiInitializedSubject.next(true); }); } diff --git a/lib/core/services/discovery-api.service.spec.ts b/lib/core/services/discovery-api.service.spec.ts index 7c57d64897..56df1d5995 100644 --- a/lib/core/services/discovery-api.service.spec.ts +++ b/lib/core/services/discovery-api.service.spec.ts @@ -21,6 +21,7 @@ import { AppConfigService } from '../app-config/app-config.service'; import { DiscoveryApiService } from './discovery-api.service'; import { setupTestBed } from '../testing/setup-test-bed'; import { CoreTestingModule } from '../testing/core.testing.module'; +import { SystemPropertiesRepresentation } from '@alfresco/js-api'; declare let jasmine: any; @@ -87,6 +88,18 @@ const fakeBPMDiscoveryResponse: any = { 'minorVersion': '6' }; +const fakeBPMDiscoverySystemPropertyResponse: any = { + 'allowInvolveByEmail': true, + 'disableJavaScriptEventsInFormEditor': false, + 'logoutDisabled': false, + 'authConfiguration': { + 'authUrl': 'fakeAuthUrl', + 'realm': 'fakeRealm', + 'clientId': 'fakeClient', + 'useBrowserLogout': true + } +}; + describe('Discovery Api Service', () => { let service; @@ -172,5 +185,42 @@ describe('Discovery Api Service', () => { status: 403 }); }); + + it('Should retrieve the system properties for BPM', (done) => { + service.getBPMSystemProperties().subscribe((data: SystemPropertiesRepresentation) => { + expect(data).not.toBeNull(); + expect(data.allowInvolveByEmail).toBe(true); + expect(data.disableJavaScriptEventsInFormEditor).toBe(false); + expect(data.logoutDisabled).toBe(false); + expect(data.authConfiguration.authUrl).toBe('fakeAuthUrl'); + expect(data.authConfiguration.realm).toBe('fakeRealm'); + expect(data.authConfiguration.clientId).toBe('fakeClient'); + expect(data.authConfiguration.useBrowserLogout).toBe(true); + done(); + }); + + jasmine.Ajax.requests.mostRecent().respondWith({ + status: 200, + contentType: 'json', + responseText: fakeBPMDiscoverySystemPropertyResponse + }); + }); + + it('Should retrieve the system properties for BPM', (done) => { + service.getBPMSystemProperties().subscribe( + () => { + fail('expected an error, bpm not running'); + }, + (error) => { + expect(error.response.statusCode).toEqual(404); + expect(error.response.statusText).toEqual('Not Found'); + done(); + }); + + jasmine.Ajax.requests.mostRecent().respondWith({ + status: 404, + statusText: 'Not Found' + }); + }); }); }); diff --git a/lib/core/services/discovery-api.service.ts b/lib/core/services/discovery-api.service.ts index f9302a51cc..a0d3a80e3b 100644 --- a/lib/core/services/discovery-api.service.ts +++ b/lib/core/services/discovery-api.service.ts @@ -20,6 +20,10 @@ import { from, throwError, Observable } from 'rxjs'; import { BpmProductVersionModel, EcmProductVersionModel } from '../models/product-version.model'; import { AlfrescoApiService } from './alfresco-api.service'; import { map, catchError } from 'rxjs/operators'; +import { + SystemPropertiesRepresentation, + Activiti + } from '@alfresco/js-api'; @Injectable({ providedIn: 'root' @@ -51,4 +55,15 @@ export class DiscoveryApiService { catchError((err) => throwError(err)) ); } + + private get systemPropertiesApi(): Activiti.SystemPropertiesApi { + return this.apiService.getInstance().activiti.systemPropertiesApi; + } + + public getBPMSystemProperties(): Observable { + return from(this.systemPropertiesApi.getProperties()) + .pipe( + catchError((err) => throwError(err.error)) + ); + } } diff --git a/lib/core/services/user-preferences.service.ts b/lib/core/services/user-preferences.service.ts index 9a73dbe75e..a1649601e4 100644 --- a/lib/core/services/user-preferences.service.ts +++ b/lib/core/services/user-preferences.service.ts @@ -21,7 +21,7 @@ import { Observable, BehaviorSubject } from 'rxjs'; import { AppConfigService, AppConfigValues } from '../app-config/app-config.service'; import { LanguageItem } from '../language-menu/language.interface'; import { StorageService } from './storage.service'; -import { distinctUntilChanged, map } from 'rxjs/operators'; +import { distinctUntilChanged, map, filter } from 'rxjs/operators'; import { AlfrescoApiService } from './alfresco-api.service'; export enum UserPreferenceValues { @@ -51,7 +51,7 @@ export class UserPreferencesService { private appConfig: AppConfigService, private storage: StorageService, private alfrescoApiService: AlfrescoApiService) { - this.alfrescoApiService.alfrescoApiInitialized.subscribe(this.initUserPreferenceStatus.bind(this)); + this.alfrescoApiService.alfrescoApiInitialized.pipe(filter(status => status)).subscribe(this.initUserPreferenceStatus.bind(this)); this.onChangeSubject = new BehaviorSubject(this.userPreferenceStatus); this.onChange = this.onChangeSubject.asObservable(); } diff --git a/package-lock.json b/package-lock.json index 5f9a8da12f..61b29a095f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,11 +5,11 @@ "requires": true, "dependencies": { "@alfresco/adf-cli": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/@alfresco/adf-cli/-/adf-cli-3.7.0.tgz", - "integrity": "sha512-cp0S8TkWWeIRCfapiQq5AfVXyhljtK7gJ4K+MRsU8spaWYRfGUXgA/RMeHdddy+ksBt98dG9EvtYGXiIhq/syQ==", + "version": "3.8.0-4cdaced7bc5fc0c3bd1021ee11fc7fee8f634193", + "resolved": "https://registry.npmjs.org/@alfresco/adf-cli/-/adf-cli-3.8.0-4cdaced7bc5fc0c3bd1021ee11fc7fee8f634193.tgz", + "integrity": "sha512-O3QiEXBBY3Ar+XvPVdVfrw8NYxNr1juXG9qU80iRFAvmE4u5OymEpBJS7aYT100MsUg2ntpxNtnRzvpNPP7Ofg==", "requires": { - "@alfresco/adf-testing": "3.7.0", + "@alfresco/adf-testing": "3.8.0-4cdaced7bc5fc0c3bd1021ee11fc7fee8f634193", "@angular-devkit/core": "^7.2.15", "commander": "^4.0.0", "ejs": "^2.6.1", @@ -21,65 +21,71 @@ } }, "@alfresco/adf-content-services": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/@alfresco/adf-content-services/-/adf-content-services-3.7.0.tgz", - "integrity": "sha512-AMFck7pdrYGL0I4AhbFV4RBNE5I273Q9/99m4tNcpctAQJVVo/ZeZ1dpgibkrz2LL9Bd+WwNsqWMUTf0e0ZIMQ==", + "version": "3.8.0-4cdaced7bc5fc0c3bd1021ee11fc7fee8f634193", + "resolved": "https://registry.npmjs.org/@alfresco/adf-content-services/-/adf-content-services-3.8.0-4cdaced7bc5fc0c3bd1021ee11fc7fee8f634193.tgz", + "integrity": "sha512-DzK7cgeujufLMOthx7wzbDvTvFs5rRvF56I2AxiFUj48mao9EIl+IxHudwzBS814Tln1sV1vY7C+tq/VqX1pzg==", "requires": { "tslib": "^1.9.0" } }, "@alfresco/adf-core": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/@alfresco/adf-core/-/adf-core-3.7.0.tgz", - "integrity": "sha512-A5z85OkZSG6CdH4KUbhDFchZp0mQderSjOPhjGw6EI409DpbZy4UcNf0dsocAMTIdDXh0s4ubmcWN+5NqZqQpw==", + "version": "3.8.0-4cdaced7bc5fc0c3bd1021ee11fc7fee8f634193", + "resolved": "https://registry.npmjs.org/@alfresco/adf-core/-/adf-core-3.8.0-4cdaced7bc5fc0c3bd1021ee11fc7fee8f634193.tgz", + "integrity": "sha512-GQMoGBsm5PBhl3iShR3+Q6iiIQ15DLRtL2uF8qi6jajH0MzUycxGri/bN8oEscz6IJ2WBYJM7AMI5qF452Wikg==", "requires": { "tslib": "^1.9.0" } }, "@alfresco/adf-extensions": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/@alfresco/adf-extensions/-/adf-extensions-3.7.0.tgz", - "integrity": "sha512-tYM6ddTKceTRemKW2nHiiHJJFH1a+U7l4LTdqNoRyTM66J4s5HDm/G+zsQBy1k7ybPTGC56d1mWA0jqq+gnEEQ==", + "version": "3.8.0-4cdaced7bc5fc0c3bd1021ee11fc7fee8f634193", + "resolved": "https://registry.npmjs.org/@alfresco/adf-extensions/-/adf-extensions-3.8.0-4cdaced7bc5fc0c3bd1021ee11fc7fee8f634193.tgz", + "integrity": "sha512-PyoGm0psaANn7TluZBQ/8irUAoz8SWxGonR1PoJM06YpI9IKWActqZwLSE2GsyTS2ZbcGD+a/45z9DscHTo/6w==", "requires": { "tslib": "^1.9.0" } }, "@alfresco/adf-insights": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/@alfresco/adf-insights/-/adf-insights-3.7.0.tgz", - "integrity": "sha512-NvvQpM0u0w2qSR/2K7Vb7uRSEmuQcJyxcX5f0/qYsZNpbAqsiIW7QzgrTZ9tSSvxVZzBMd7OMwQQn89KV+s95g==", + "version": "3.8.0-4cdaced7bc5fc0c3bd1021ee11fc7fee8f634193", + "resolved": "https://registry.npmjs.org/@alfresco/adf-insights/-/adf-insights-3.8.0-4cdaced7bc5fc0c3bd1021ee11fc7fee8f634193.tgz", + "integrity": "sha512-qOrBF9GjV54pi/XZ3jsl0zF0G0zREdwKvNyJA+aXolrn8+KdCEUgifklcQ57kpngjWFw8fPuHsN4jNRAFv94Vg==", "requires": { "tslib": "^1.9.0" } }, "@alfresco/adf-process-services": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/@alfresco/adf-process-services/-/adf-process-services-3.7.0.tgz", - "integrity": "sha512-a9mYsaf19qOdUYjAos5ym7T6roZJGvhYd3ghLs7CkJ7B12dEh+OtuBERAg0UbS+WxLx+tyUIxfBKu3e3SnmIPA==", + "version": "3.8.0-4cdaced7bc5fc0c3bd1021ee11fc7fee8f634193", + "resolved": "https://registry.npmjs.org/@alfresco/adf-process-services/-/adf-process-services-3.8.0-4cdaced7bc5fc0c3bd1021ee11fc7fee8f634193.tgz", + "integrity": "sha512-+qMbQkl7ApR5etxx915DWYN0DtvkRzL5M8FZDZbMgn86aWA7Nqj3IGlKdcmtIqXKao7lPvQgkEPBUwXFQ0gIug==", "requires": { "tslib": "^1.9.0" } }, "@alfresco/adf-process-services-cloud": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/@alfresco/adf-process-services-cloud/-/adf-process-services-cloud-3.7.0.tgz", - "integrity": "sha512-4XGv9vLk5mBfMDoqV9+Qi2SciHzZfuWiG5ZYbDmqk6LSsjdsOF73bkAXeXVd5xhWigibIAuBvlaPL9Yb+lpWBQ==", + "version": "3.8.0-4cdaced7bc5fc0c3bd1021ee11fc7fee8f634193", + "resolved": "https://registry.npmjs.org/@alfresco/adf-process-services-cloud/-/adf-process-services-cloud-3.8.0-4cdaced7bc5fc0c3bd1021ee11fc7fee8f634193.tgz", + "integrity": "sha512-ZYF/sgsLWI1z+kJ2UkRPNTm+ccOqCxu4+8mEmyi80iF8ZJ1BHxW3wKsq3jLtVllgipjFgQQNVMhq08rjg6aczw==", "requires": { "tslib": "^1.9.0" } }, "@alfresco/adf-testing": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/@alfresco/adf-testing/-/adf-testing-3.7.0.tgz", - "integrity": "sha512-RvsWg3xHBtBZZ2x7zYhomsZ3gB93D5bmwphg/HeR90v53+ruu2hbgDk1+mv5qINhcbOF21cAcR4GtqVn0UnzVg==", + "version": "3.8.0-4cdaced7bc5fc0c3bd1021ee11fc7fee8f634193", + "resolved": "https://registry.npmjs.org/@alfresco/adf-testing/-/adf-testing-3.8.0-4cdaced7bc5fc0c3bd1021ee11fc7fee8f634193.tgz", + "integrity": "sha512-v3nJ0ONK/f4WdZKdXXYUVLZnbQB7ku9eC7pGd9SjegPZFU64ztW0+vYM8f8yeX8XD768fPx+v59+xVaPZpwjOw==", "requires": { "tslib": "^1.9.0" } }, "@alfresco/js-api": { +<<<<<<< HEAD "version": "3.8.0-3a40c5996640ecadb0861606ff7692210d9ec2fd", "resolved": "https://registry.npmjs.org/@alfresco/js-api/-/js-api-3.8.0-3a40c5996640ecadb0861606ff7692210d9ec2fd.tgz", "integrity": "sha512-oHW5wPMjLOgKILpDUH41eduKgpiXbydaFQDKcb7Cz7a2RdtDArExqMu2PRMwg4Dkm2Kx6PDa441aYi+8C7qo/w==", +======= + "version": "3.8.0-99f5e9a4c468368f9538b5f6ec6473cc0dd6af78", + "resolved": "https://registry.npmjs.org/@alfresco/js-api/-/js-api-3.8.0-99f5e9a4c468368f9538b5f6ec6473cc0dd6af78.tgz", + "integrity": "sha512-ip90kBBTqRFUSkPwVev1A0Q7g7oCrxuOuG7KObcgvt77KdH3dLYbYMn0UmVS0i2BuwxITRrIqZ+bxynF3Tt4Rw==", +>>>>>>> Use latest api "requires": { "event-emitter": "^0.3.5", "minimatch": "3.0.4", diff --git a/package.json b/package.json index cf03994b24..1a1af98a08 100644 --- a/package.json +++ b/package.json @@ -78,15 +78,15 @@ "process services-cloud" ], "dependencies": { - "@alfresco/adf-cli": "3.7.0", - "@alfresco/adf-content-services": "3.7.0", - "@alfresco/adf-core": "3.7.0", - "@alfresco/adf-extensions": "3.7.0", - "@alfresco/adf-insights": "3.7.0", - "@alfresco/adf-process-services": "3.7.0", - "@alfresco/adf-process-services-cloud": "3.7.0", - "@alfresco/adf-testing": "3.7.0", - "@alfresco/js-api": "3.8.0-3a40c5996640ecadb0861606ff7692210d9ec2fd", + "@alfresco/adf-cli": "3.8.0-4cdaced7bc5fc0c3bd1021ee11fc7fee8f634193", + "@alfresco/adf-content-services": "3.8.0-4cdaced7bc5fc0c3bd1021ee11fc7fee8f634193", + "@alfresco/adf-core": "3.8.0-4cdaced7bc5fc0c3bd1021ee11fc7fee8f634193", + "@alfresco/adf-extensions": "3.8.0-4cdaced7bc5fc0c3bd1021ee11fc7fee8f634193", + "@alfresco/adf-insights": "3.8.0-4cdaced7bc5fc0c3bd1021ee11fc7fee8f634193", + "@alfresco/adf-process-services": "3.8.0-4cdaced7bc5fc0c3bd1021ee11fc7fee8f634193", + "@alfresco/adf-process-services-cloud": "3.8.0-4cdaced7bc5fc0c3bd1021ee11fc7fee8f634193", + "@alfresco/adf-testing": "3.8.0-4cdaced7bc5fc0c3bd1021ee11fc7fee8f634193", + "@alfresco/js-api": "3.8.0-99f5e9a4c468368f9538b5f6ec6473cc0dd6af78", "@angular/animations": "^7.2.15", "@angular/cdk": "7.3.7", "@angular/common": "^7.2.15",