From 550a2231644365c440fdcba36dcc2423e3eb7583 Mon Sep 17 00:00:00 2001 From: davidcanonieto Date: Wed, 5 May 2021 14:14:44 +0100 Subject: [PATCH] [ADF-5379] Add a way to disable WS notifications (#6924) * [ADF-5379] Add a way to disable WS notifications * Update app-notifications.service.ts * Update task-filters-cloud.component.spec.ts * Move flag to upper level in config.json * Create new notification section in app.config.json * Update implementation * Improve naming --- demo-shell/src/app.config.json | 1 + .../app/services/app-notifications.service.ts | 8 +++++-- .../docassets/images/update-filter-bubble.png | Bin 0 -> 20821 bytes .../task-filters-cloud.component.md | 17 +++++++++++++- .../task-filters-cloud.component.spec.ts | 22 +++++++++++++++++- .../task-filters-cloud.component.ts | 10 +++++--- 6 files changed, 51 insertions(+), 7 deletions(-) create mode 100644 docs/docassets/images/update-filter-bubble.png diff --git a/demo-shell/src/app.config.json b/demo-shell/src/app.config.json index 93410d0a9b..806171d9a2 100644 --- a/demo-shell/src/app.config.json +++ b/demo-shell/src/app.config.json @@ -33,6 +33,7 @@ "name": "Alfresco ADF Application", "copyright": "© 2016 - 2021 Alfresco Software, Inc. All Rights Reserved." }, + "notifications": true, "search": { "filterWithContains": true, "app:fields": [ diff --git a/demo-shell/src/app/services/app-notifications.service.ts b/demo-shell/src/app/services/app-notifications.service.ts index 45c2ada84f..a485c73c29 100644 --- a/demo-shell/src/app/services/app-notifications.service.ts +++ b/demo-shell/src/app/services/app-notifications.service.ts @@ -54,7 +54,7 @@ export class AppNotificationsService { private alfrescoApiService: AlfrescoApiService ) { this.alfrescoApiService.alfrescoApiInitialized.subscribe(() => { - if (this.isProcessServicesEnabled()) { + if (this.isProcessServicesEnabled() && this.notificationsEnabled) { this.alfrescoApiService.getInstance().oauth2Auth.once('token_issued', () => { const deployedApps = this.appConfigService.get('alfresco-deployed-apps', []); @@ -76,7 +76,11 @@ export class AppNotificationsService { }); } - private isProcessServicesEnabled() { + private get notificationsEnabled(): boolean { + return this.appConfigService.get('notifications', true); + } + + private isProcessServicesEnabled(): boolean { return this.authenticationService.isLoggedIn() && (this.authenticationService.isBPMProvider() || this.authenticationService.isALLProvider()); } diff --git a/docs/docassets/images/update-filter-bubble.png b/docs/docassets/images/update-filter-bubble.png new file mode 100644 index 0000000000000000000000000000000000000000..fed116ffaa9bb8366bea34ba495a97e70a94b14e GIT binary patch literal 20821 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 Nc)I$ztaD0e0s!De*0lft literal 0 HcmV?d00001 diff --git a/docs/process-services-cloud/components/task-filters-cloud.component.md b/docs/process-services-cloud/components/task-filters-cloud.component.md index d5b215fbde..440c90d448 100644 --- a/docs/process-services-cloud/components/task-filters-cloud.component.md +++ b/docs/process-services-cloud/components/task-filters-cloud.component.md @@ -18,6 +18,7 @@ Shows all available filters. - [Details](#details) - [Filtering APS2 task filters](#filtering-aps2-task-filters) - [Showing Filter Counters](#showing-filter-counters) + - [Updating Filter Counters](#updating-filter-counters) - [See also](#see-also) ## Basic Usage @@ -66,7 +67,7 @@ as the value of `filterParam` as shown in the table below: | id | string | The id of the task filter | | name | string | The name of the task filter, lowercase is checked | | key | string | The key of the task filter | -| index | string | The zero-based position of the filter in the array. | +| index | string | The zero-based position of the filter in the array | ### Showing Filter Counters @@ -74,6 +75,20 @@ By default, filter counters are hidden. If you want to display filter counters y ![](../../docassets/images/task-filter-counter.png) +### Updating Filter Counters + +If you want to disable notification bubbles as task filters change you can change it directly from the app.config.json. + +```json +{ + ... + "notifications": true + ... +} +``` + +![](../../docassets/images/update-filter-bubble.png) + ## See also - [Task filter Cloud Service](../services/task-filter-cloud.service.md) diff --git a/lib/process-services-cloud/src/lib/task/task-filters/components/task-filters-cloud.component.spec.ts b/lib/process-services-cloud/src/lib/task/task-filters/components/task-filters-cloud.component.spec.ts index d181f267b4..51f98357a2 100644 --- a/lib/process-services-cloud/src/lib/task/task-filters/components/task-filters-cloud.component.spec.ts +++ b/lib/process-services-cloud/src/lib/task/task-filters/components/task-filters-cloud.component.spec.ts @@ -17,7 +17,7 @@ import { SimpleChange } from '@angular/core'; import { ComponentFixture, TestBed, async, fakeAsync, tick } from '@angular/core/testing'; -import { setupTestBed } from '@alfresco/adf-core'; +import { AppConfigService, setupTestBed } from '@alfresco/adf-core'; import { from, Observable, of } from 'rxjs'; import { TASK_FILTERS_SERVICE_TOKEN } from '../../../services/cloud-token.service'; import { LocalPreferenceCloudService } from '../../../services/local-preference-cloud.service'; @@ -32,6 +32,7 @@ import { TranslateModule } from '@ngx-translate/core'; describe('TaskFiltersCloudComponent', () => { let taskFilterService: TaskFilterCloudService; + let appConfigService: AppConfigService; const fakeGlobalFilterObservable = new Observable(function (observer) { @@ -71,6 +72,8 @@ describe('TaskFiltersCloudComponent', () => { taskFilterService = TestBed.inject(TaskFilterCloudService); getTaskFilterCounterSpy = spyOn(taskFilterService, 'getTaskFilterCounter').and.returnValue(of(11)); spyOn(taskFilterService, 'getTaskNotificationSubscription').and.returnValue(of(taskNotifications)); + + appConfigService = TestBed.inject(AppConfigService); }); it('should attach specific icon for each filter if hasIcon is true', async(() => { @@ -384,6 +387,7 @@ describe('TaskFiltersCloudComponent', () => { it('should update filter counter when notification received', fakeAsync(() => { spyOn(taskFilterService, 'getTaskListFilters').and.returnValue(fakeGlobalFilterObservable); + spyOn(appConfigService, 'get').and.returnValue(true); component.appName = 'my-app-1'; component.ngOnInit(); tick(5000); @@ -398,8 +402,24 @@ describe('TaskFiltersCloudComponent', () => { }); })); + it('should not update filter counter when notifications are disabled from app.config.json', fakeAsync(() => { + spyOn(taskFilterService, 'getTaskListFilters').and.returnValue(fakeGlobalFilterObservable); + spyOn(appConfigService, 'get').and.returnValue(false); + component.appName = 'my-app-1'; + component.ngOnInit(); + tick(5000); + fixture.detectChanges(); + component.showIcons = true; + fixture.whenStable().then(() => { + fixture.detectChanges(); + const updatedFilterCounters = fixture.debugElement.queryAll(By.css('span.adf-active')); + expect(updatedFilterCounters.length).toBe(0); + }); + })); + it('should reset filter counter notification when filter is selected', fakeAsync(() => { spyOn(taskFilterService, 'getTaskListFilters').and.returnValue(fakeGlobalFilterObservable); + spyOn(appConfigService, 'get').and.returnValue(true); let change = new SimpleChange(undefined, 'my-app-1', true); component.appName = 'my-app-1'; component.ngOnInit(); diff --git a/lib/process-services-cloud/src/lib/task/task-filters/components/task-filters-cloud.component.ts b/lib/process-services-cloud/src/lib/task/task-filters/components/task-filters-cloud.component.ts index 5e50346f1a..b49e8441f4 100644 --- a/lib/process-services-cloud/src/lib/task/task-filters/components/task-filters-cloud.component.ts +++ b/lib/process-services-cloud/src/lib/task/task-filters/components/task-filters-cloud.component.ts @@ -19,7 +19,7 @@ import { Component, EventEmitter, OnChanges, Output, SimpleChanges, OnInit } fro import { Observable } from 'rxjs'; import { TaskFilterCloudService } from '../services/task-filter-cloud.service'; import { TaskFilterCloudModel, FilterParamsModel } from '../models/filter-cloud.model'; -import { TranslationService } from '@alfresco/adf-core'; +import { AppConfigService, TranslationService } from '@alfresco/adf-core'; import { debounceTime, takeUntil } from 'rxjs/operators'; import { BaseTaskFiltersCloudComponent } from './base-task-filters-cloud.component'; import { TaskDetailsCloudModel } from '../../start-task/models/task-details-cloud.model'; @@ -31,6 +31,7 @@ import { TaskCloudEngineEvent } from '../../../models/engine-event-cloud.model'; styleUrls: ['base-task-filters-cloud.component.scss'] }) export class TaskFiltersCloudComponent extends BaseTaskFiltersCloudComponent implements OnInit, OnChanges { + /** Emitted when a filter is being selected based on the filterParam input. */ @Output() filterSelected = new EventEmitter(); @@ -46,13 +47,16 @@ export class TaskFiltersCloudComponent extends BaseTaskFiltersCloudComponent imp filters$: Observable; filters: TaskFilterCloudModel[] = []; currentFilter: TaskFilterCloudModel; + enableNotifications: boolean; constructor(private taskFilterCloudService: TaskFilterCloudService, - private translationService: TranslationService) { + private translationService: TranslationService, + private appConfigService: AppConfigService) { super(); } ngOnInit() { + this.enableNotifications = this.appConfigService.get('notifications', true); this.initFilterCounterNotifications(); this.getFilters(this.appName); } @@ -98,7 +102,7 @@ export class TaskFiltersCloudComponent extends BaseTaskFiltersCloudComponent imp } initFilterCounterNotifications() { - if (this.appName) { + if (this.appName && this.enableNotifications) { this.taskFilterCloudService.getTaskNotificationSubscription(this.appName) .pipe(debounceTime(3000)) .subscribe((result: TaskCloudEngineEvent[]) => {