From 52467b9ddececadff74f31ae49a5f5f900ecd572 Mon Sep 17 00:00:00 2001 From: Nicoleta Panaghiu Date: Wed, 6 Mar 2024 15:00:49 +0200 Subject: [PATCH 1/2] RED-8623: filtered out check requests on certain pages. --- .../dossiers/dossier-changes.service.ts | 4 ++++ .../src/app/services/notifications.service.ts | 23 ++++++++++++------- apps/red-ui/src/app/utils/constants.ts | 1 + apps/red-ui/src/app/utils/operators.ts | 7 ++++++ 4 files changed, 27 insertions(+), 8 deletions(-) create mode 100644 apps/red-ui/src/app/utils/operators.ts diff --git a/apps/red-ui/src/app/services/dossiers/dossier-changes.service.ts b/apps/red-ui/src/app/services/dossiers/dossier-changes.service.ts index fe43372cb..0484623a3 100644 --- a/apps/red-ui/src/app/services/dossiers/dossier-changes.service.ts +++ b/apps/red-ui/src/app/services/dossiers/dossier-changes.service.ts @@ -11,6 +11,8 @@ import { DashboardStatsService } from '../dossier-templates/dashboard-stats.serv import { CHANGED_CHECK_INTERVAL } from '@utils/constants'; import { List } from '@iqser/common-ui/lib/utils'; import { DossiersCacheService } from '@services/dossiers/dossiers-cache.service'; +import { Router } from '@angular/router'; +import { filterEventsOnPages } from '@utils/operators'; @Injectable({ providedIn: 'root' }) export class DossiersChangesService extends GenericService implements OnDestroy { @@ -20,6 +22,7 @@ export class DossiersChangesService extends GenericService implements O readonly #dashboardStatsService = inject(DashboardStatsService); readonly #logger = inject(NGXLogger); readonly #dossierCache = inject(DossiersCacheService); + readonly #router = inject(Router); protected readonly _defaultModelPath = 'dossier'; loadOnlyChanged(): Observable { @@ -60,6 +63,7 @@ export class DossiersChangesService extends GenericService implements O initialize() { this.#logger.info('[DOSSIERS_CHANGES] Initialize timer'); const subscription = timer(CHANGED_CHECK_INTERVAL, CHANGED_CHECK_INTERVAL).pipe( + filterEventsOnPages(this.#router), switchMap(() => this.loadOnlyChanged()), tap(changes => { this.#activeDossiersService.emitFileChanges(changes); diff --git a/apps/red-ui/src/app/services/notifications.service.ts b/apps/red-ui/src/app/services/notifications.service.ts index 232e14721..c5658c501 100644 --- a/apps/red-ui/src/app/services/notifications.service.ts +++ b/apps/red-ui/src/app/services/notifications.service.ts @@ -12,6 +12,8 @@ import { DossiersCacheService } from './dossiers/dossiers-cache.service'; import dayjs from 'dayjs'; import { List, mapEach } from '@iqser/common-ui/lib/utils'; import { APP_BASE_HREF } from '@angular/common'; +import { Router } from '@angular/router'; +import { filterEventsOnPages } from '@utils/operators'; const INCLUDE_SEEN = false; @@ -33,6 +35,7 @@ export class NotificationsService extends EntitiesService (this._dossiersCacheService.empty ? this._dossiersCacheService.load() : of(null))), switchMap(() => this.#loadNotificationsIfChanged()), ); // Rebuild notifications when cached dossiers are updated - const changed$ = this._dossiersCacheService.changed$.pipe(tap(() => this.setEntities(this.all.map(e => this._new(e))))); + const changed$ = this._dossiersCacheService.changed$.pipe( + filterEventsOnPages(this._router), + tap(() => this.setEntities(this.all.map(e => this._new(e)))), + ); return merge(timer$, changed$); } diff --git a/apps/red-ui/src/app/utils/constants.ts b/apps/red-ui/src/app/utils/constants.ts index 3008d5309..cdc6ab3f8 100644 --- a/apps/red-ui/src/app/utils/constants.ts +++ b/apps/red-ui/src/app/utils/constants.ts @@ -1,6 +1,7 @@ import { DynamicCaches } from '@iqser/common-ui'; export const CHANGED_CHECK_INTERVAL = 5000; +export const NO_CHECK_PAGES = ['admin', 'account', 'downloads', 'trash']; export const FALLBACK_COLOR = '#CCCCCC'; export const UI_CACHES: DynamicCaches = [ diff --git a/apps/red-ui/src/app/utils/operators.ts b/apps/red-ui/src/app/utils/operators.ts new file mode 100644 index 000000000..31d465942 --- /dev/null +++ b/apps/red-ui/src/app/utils/operators.ts @@ -0,0 +1,7 @@ +import { filter } from 'rxjs/operators'; +import { NO_CHECK_PAGES } from '@utils/constants'; +import { Router } from '@angular/router'; + +export function filterEventsOnPages(router: Router) { + return filter(() => !NO_CHECK_PAGES.reduce((acc, route) => acc || router.url.includes(route), false)); +} From 1b93d38872c6b6385dd1c900ac2bc999d420504f Mon Sep 17 00:00:00 2001 From: Nicoleta Panaghiu Date: Wed, 6 Mar 2024 15:34:17 +0200 Subject: [PATCH 2/2] RED-8623: use some instead of reduce. --- apps/red-ui/src/app/utils/operators.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/red-ui/src/app/utils/operators.ts b/apps/red-ui/src/app/utils/operators.ts index 31d465942..e7b8fa516 100644 --- a/apps/red-ui/src/app/utils/operators.ts +++ b/apps/red-ui/src/app/utils/operators.ts @@ -3,5 +3,5 @@ import { NO_CHECK_PAGES } from '@utils/constants'; import { Router } from '@angular/router'; export function filterEventsOnPages(router: Router) { - return filter(() => !NO_CHECK_PAGES.reduce((acc, route) => acc || router.url.includes(route), false)); + return filter(() => !NO_CHECK_PAGES.some(route => router.url.includes(route))); }