From e293f3db52cf1e5b95a053480630525904f30664 Mon Sep 17 00:00:00 2001 From: Kristof De Langhe Date: Wed, 25 Oct 2023 11:20:39 +0200 Subject: [PATCH] 107685: menu-component re-render section on store update --- src/app/shared/menu/menu.component.ts | 3 +-- src/app/shared/menu/menu.service.ts | 9 ++++++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/app/shared/menu/menu.component.ts b/src/app/shared/menu/menu.component.ts index 35e180b476..805f5888ea 100644 --- a/src/app/shared/menu/menu.component.ts +++ b/src/app/shared/menu/menu.component.ts @@ -6,7 +6,6 @@ import { GenericConstructor } from '../../core/shared/generic-constructor'; import { hasValue, isNotEmptyOperator } from '../empty.util'; import { MenuSectionComponent } from './menu-section/menu-section.component'; import { getComponentForMenu } from './menu-section.decorator'; -import { compareArraysUsingIds } from '../../item-page/simple/item-types/shared/item-relationships-utils'; import { MenuSection } from './menu-section.model'; import { MenuID } from './menu-id.model'; import { ActivatedRoute } from '@angular/router'; @@ -86,7 +85,7 @@ export class MenuComponent implements OnInit, OnDestroy { this.menuCollapsed = this.menuService.isMenuCollapsed(this.menuID); this.menuPreviewCollapsed = this.menuService.isMenuPreviewCollapsed(this.menuID); this.menuVisible = this.menuService.isMenuVisible(this.menuID); - this.sections = this.menuService.getMenuTopSections(this.menuID).pipe(distinctUntilChanged(compareArraysUsingIds())); + this.sections = this.menuService.getMenuTopSections(this.menuID); this.subs.push( this.sections.pipe( diff --git a/src/app/shared/menu/menu.service.ts b/src/app/shared/menu/menu.service.ts index 0ec7d67f25..f6f09be876 100644 --- a/src/app/shared/menu/menu.service.ts +++ b/src/app/shared/menu/menu.service.ts @@ -2,7 +2,7 @@ import { Injectable } from '@angular/core'; import { createSelector, MemoizedSelector, select, Store } from '@ngrx/store'; import { AppState, keySelector } from '../../app.reducer'; import { combineLatest as observableCombineLatest, Observable } from 'rxjs'; -import { filter, map, switchMap, take } from 'rxjs/operators'; +import { distinctUntilChanged, filter, map, switchMap, take } from 'rxjs/operators'; import { ActivateMenuSectionAction, AddMenuSectionAction, @@ -23,6 +23,7 @@ import { MenuSections } from './menu-sections.model'; import { MenuSection } from './menu-section.model'; import { MenuID } from './menu-id.model'; import { ActivatedRoute, NavigationEnd, Router } from '@angular/router'; +import { compareArraysUsingIds } from '../../item-page/simple/item-types/shared/item-relationships-utils'; export function menuKeySelector(key: string, selector): MemoizedSelector { return createSelector(selector, (state) => { @@ -81,8 +82,10 @@ export class MenuService { return this.store.pipe( select(menuByIDSelector(menuID)), select(menuSectionStateSelector), - map((sections: MenuSections) => { - return Object.values(sections) + map((sections: MenuSections) => Object.values(sections)), + distinctUntilChanged(compareArraysUsingIds()), + map((sections: MenuSection[]) => { + return sections .filter((section: MenuSection) => hasNoValue(section.parentID)) .filter((section: MenuSection) => !mustBeVisible || section.visible); }