[ADF-2676] Demo shell pagination bug fix (#3174)

* Demo shell pagination bug fix

* tslint error fix

* user preferences service fix

* refactor

* refactor

* refactor

* unit tests added

* unit tests fix

* [ADF-2676] added documentation for app config onChange stream

* [ADF-2676] renamed onChange stream to onLoad stream

* [ADF-2676] fixed test
This commit is contained in:
Alex Bolboșenco
2018-04-14 04:47:06 +03:00
committed by Eugenio Romano
parent d0f5bad894
commit 66d8935624
4 changed files with 53 additions and 2 deletions

View File

@@ -16,7 +16,7 @@
*/
import { HttpClientModule } from '@angular/common/http';
import { inject, TestBed } from '@angular/core/testing';
import { async, inject, TestBed } from '@angular/core/testing';
import { AppConfigService } from './app-config.service';
import { AppConfigModule } from './app-config.module';
@@ -72,6 +72,20 @@ describe('AppConfigService', () => {
expect(appConfigService).toBeDefined();
});
it('should stream only the selected attribute changes when using select', async(() => {
appConfigService.config.testProp = true;
appConfigService.select('testProp').subscribe((property) => {
expect(property).toBeTruthy();
});
}));
it('should stream the page size value when is set', async(() => {
appConfigService.config.testProp = true;
appConfigService.onLoad.subscribe((config) => {
expect(config.testProp).toBeTruthy();
});
}));
it('should skip the optional port number', () => {
appConfigService.config.testUrl = 'http://{hostname}{:port}';

View File

@@ -18,6 +18,8 @@
import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { ObjectUtils } from '../utils/object-utils';
import { BehaviorSubject } from 'rxjs/BehaviorSubject';
import { Observable } from 'rxjs/Observable';
@Injectable()
export class AppConfigService {
@@ -34,7 +36,16 @@ export class AppConfigService {
alfrescoRepositoryName: 'alfresco-1'
};
private onLoadSubject: BehaviorSubject<any>;
onLoad: Observable<any>;
constructor(private http: HttpClient) {
this.onLoadSubject = new BehaviorSubject(this.config);
this.onLoad = this.onLoadSubject.asObservable();
}
select(property: string): Observable<any> {
return this.onLoadSubject.map((config) => config[property]).distinctUntilChanged();
}
get<T>(key: string, defaultValue?: T): T {
@@ -65,6 +76,7 @@ export class AppConfigService {
this.http.get('app.config.json').subscribe(
(data: any) => {
this.config = Object.assign({}, this.config, data || {});
this.onLoadSubject.next(this.config);
resolve(this.config);
},
() => {

View File

@@ -61,7 +61,7 @@ export class UserPreferencesService {
private storage: StorageService,
private apiService: AlfrescoApiService
) {
this.initUserPreferenceStatus();
this.appConfig.onLoad.subscribe(this.initUserPreferenceStatus.bind(this));
this.localeSubject = new BehaviorSubject(this.defaults.locale);
this.locale$ = this.localeSubject.asObservable();
this.onChangeSubject = new BehaviorSubject(this.userPreferenceStatus);