diff --git a/apps/isa-app/src/page/pickup-shelf/pickup-shelf-in/pickup-shelf-in-details/pickup-shelf-in-details.component.ts b/apps/isa-app/src/page/pickup-shelf/pickup-shelf-in/pickup-shelf-in-details/pickup-shelf-in-details.component.ts index b44c6816f..736df4edd 100644 --- a/apps/isa-app/src/page/pickup-shelf/pickup-shelf-in/pickup-shelf-in-details/pickup-shelf-in-details.component.ts +++ b/apps/isa-app/src/page/pickup-shelf/pickup-shelf-in/pickup-shelf-in-details/pickup-shelf-in-details.component.ts @@ -1,4 +1,4 @@ -import { Component, ChangeDetectionStrategy, inject, OnInit, AfterViewInit, ViewChild } from '@angular/core'; +import { Component, ChangeDetectionStrategy, inject, OnInit, AfterViewInit, ViewChild, effect, untracked } from '@angular/core'; import { PickupShelfDetailsBaseComponent } from '../../pickup-shelf-details-base.component'; import { AsyncPipe, NgFor, NgIf } from '@angular/common'; import { PickUpShelfDetailsHeaderComponent } from '../../shared/pickup-shelf-details-header/pickup-shelf-details-header.component'; @@ -11,7 +11,7 @@ import { OnInitDirective } from '@shared/directives/element-lifecycle'; import { PickupShelfInNavigationService } from '@shared/services/navigation'; import { BehaviorSubject, asapScheduler, combineLatest } from 'rxjs'; import { distinctUntilChanged, map, shareReplay } from 'rxjs/operators'; -import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; +import { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop'; import { DBHOrderItemListItemDTO, KeyValueDTOOfStringAndString } from '@swagger/oms'; import { UiErrorModalComponent, UiModalService } from '@ui/modal'; import { ActivatedRoute } from '@angular/router'; @@ -52,8 +52,12 @@ export class PickupShelfInDetailsComponent extends PickupShelfDetailsBaseCompone order$ = this.store.order$; + $customerNumber = toSignal(this.store.customerNumber$); + orderItems$ = this.store.orderItems$.pipe(shareReplay(1)); + $orderItems = toSignal(this.orderItems$); + noOrderItemsFound$ = this.store.noOrderItemsFound$; fetchingOrder$ = this.store.fetchingOrder$; @@ -105,6 +109,17 @@ export class PickupShelfInDetailsComponent extends PickupShelfDetailsBaseCompone private _activatedRoute: ActivatedRoute, ) { super(); + + effect(() => { + const customerNumber = this.$customerNumber(); + this.$orderItems(); + + if (customerNumber) { + untracked(() => { + this.store.fetchCoverOrderItems(customerNumber); + }); + } + }); } ngOnInit() { @@ -124,11 +139,11 @@ export class PickupShelfInDetailsComponent extends PickupShelfDetailsBaseCompone }); // Fix #4696 - Always Fetch Cover Order Items - this._activatedRoute.params.pipe(distinctUntilChanged(isEqual), takeUntilDestroyed(this.destroyRef)).subscribe((_) => { - if (!this.store.coverOrderItems || this.store.coverOrderItems.length === 0) { - this.store.fetchCoverOrderItems(); - } - }); + // this._activatedRoute.params.pipe(distinctUntilChanged(isEqual), takeUntilDestroyed(this.destroyRef)).subscribe((_) => { + // if (!this.store.coverOrderItems || this.store.coverOrderItems.length === 0) { + // this.store.fetchCoverOrderItems(); + // } + // }); } ngAfterViewInit() { diff --git a/apps/isa-app/src/page/pickup-shelf/store/pickup-shelf-details.store.ts b/apps/isa-app/src/page/pickup-shelf/store/pickup-shelf-details.store.ts index 4864aae19..c27fae39d 100644 --- a/apps/isa-app/src/page/pickup-shelf/store/pickup-shelf-details.store.ts +++ b/apps/isa-app/src/page/pickup-shelf/store/pickup-shelf-details.store.ts @@ -20,7 +20,7 @@ import { } from '@swagger/oms'; import { PickupShelfIOService, PickupShelfService } from '@domain/pickup-shelf'; import { Injectable, inject } from '@angular/core'; -import { delayWhen, filter, map, mergeMap, switchMap, take, tap, withLatestFrom } from 'rxjs/operators'; +import { delayWhen, distinctUntilChanged, filter, map, mergeMap, switchMap, take, tap, withLatestFrom } from 'rxjs/operators'; import { UiModalService } from '@ui/modal'; import { CrmCustomerService } from '@domain/crm'; import * as Selectors from './pickup-shelf-details.selectors'; @@ -29,6 +29,7 @@ import { CacheService } from '@core/cache'; import { RunCheckTrigger } from '../trigger'; import { DomainReceiptService } from '@domain/oms'; import { PickupShelfStore } from './pickup-shelf.store'; +import { isEqual } from 'lodash'; @Injectable() export class PickupShelfDetailsStore extends ComponentStore { @@ -67,7 +68,10 @@ export class PickupShelfDetailsStore extends ComponentStore s).pipe(switchMap((s) => this._listStore.itemsForPreview$(s))), - ]).pipe(map(([orderItems, itemsForPreview]) => (orderItems?.length ? orderItems : itemsForPreview))); + ]).pipe( + map(([orderItems, itemsForPreview]) => (orderItems?.length ? orderItems : itemsForPreview)), + distinctUntilChanged(isEqual), + ); get orderItems() { const orderItems = this.get(Selectors.selectOrderItems); @@ -700,19 +704,10 @@ export class PickupShelfDetailsStore extends ComponentStore - this.customerNumber$.pipe( - filter((cn) => !!cn), - take(1), - ), - ); - - fetchCoverOrderItems = this.effect((trigger$: Observable) => + fetchCoverOrderItems = this.effect((trigger$: Observable) => trigger$.pipe( - this.delayWhenCustomerNumberNotExists, tap(() => this.beforeFetchCoverOrderItems()), - withLatestFrom(this.customerNumber$), - switchMap(([_, customerNumber]) => + switchMap((customerNumber) => this._pickupShelfIOService .getOrderItemsByCustomerNumber({ customerNumber,