diff --git a/src/app/shared/notifications/notifications-board/notifications-board.component.ts b/src/app/shared/notifications/notifications-board/notifications-board.component.ts index 20bf7175f6f..c6abb39f705 100644 --- a/src/app/shared/notifications/notifications-board/notifications-board.component.ts +++ b/src/app/shared/notifications/notifications-board/notifications-board.component.ts @@ -10,8 +10,6 @@ import { import { select, Store } from '@ngrx/store'; import { BehaviorSubject, Subscription, take } from 'rxjs'; -import difference from 'lodash/difference'; - import { NotificationsService } from '../notifications.service'; import { AppState } from '../../../app.reducer'; import { notificationsStateSelector } from '../selectors'; @@ -23,6 +21,7 @@ import { AccessibilitySetting } from '../../../accessibility/accessibility-settings.service'; import cloneDeep from 'lodash/cloneDeep'; +import differenceWith from 'lodash/differenceWith'; @Component({ selector: 'ds-notifications-board', @@ -69,13 +68,13 @@ export class NotificationsBoardComponent implements OnInit, OnDestroy { this.notifications = []; } else if (state.length > this.notifications.length) { // Add - const newElem = difference(state, this.notifications); + const newElem = differenceWith(state, this.notifications, this.toCheck); newElem.forEach((notification) => { this.add(notification); }); } else { // Remove - const delElem = difference(this.notifications, state); + const delElem = differenceWith(this.notifications, state, this.toCheck); delElem.forEach((notification) => { this.notifications = this.notifications.filter((item: INotification) => item.id !== notification.id); @@ -117,16 +116,15 @@ export class NotificationsBoardComponent implements OnInit, OnDestroy { } private block(item: INotification): boolean { - const toCheck = item.html ? this.checkHtml : this.checkStandard; this.notifications.forEach((notification) => { - if (toCheck(notification, item)) { + if (this.toCheck(notification, item)) { return true; } }); if (this.notifications.length > 0) { this.notifications.forEach((notification) => { - if (toCheck(notification, item)) { + if (this.toCheck(notification, item)) { return true; } }); @@ -138,9 +136,17 @@ export class NotificationsBoardComponent implements OnInit, OnDestroy { } else { return false; } - return toCheck(comp, item); + return this.toCheck(comp, item); } + private toCheck = (checker: INotification, item: INotification) => { + if (item.html) { + return this.checkHtml(checker, item); + } else { + return this.checkStandard(checker, item); + } + }; + private checkStandard(checker: INotification, item: INotification): boolean { return checker.type === item.type && checker.title === item.title && checker.content === item.content; }