Merge branch 'master' into release/3.4

This commit is contained in:
Lorenz Hilpert
2024-11-25 13:50:34 +01:00
2 changed files with 30 additions and 20 deletions

View File

@@ -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() {

View File

@@ -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<PickupShelfDetailsState> {
@@ -67,7 +68,10 @@ export class PickupShelfDetailsStore extends ComponentStore<PickupShelfDetailsSt
orderItems$ = combineLatest([
this.select(Selectors.selectOrderItems),
this.select((s) => 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<PickupShelfDetailsSt
return this.select(Selectors.selectLatestSmsNotificationDate2(orderItemSubsetId));
};
delayWhenCustomerNumberNotExists = delayWhen(() =>
this.customerNumber$.pipe(
filter((cn) => !!cn),
take(1),
),
);
fetchCoverOrderItems = this.effect((trigger$: Observable<void>) =>
fetchCoverOrderItems = this.effect((trigger$: Observable<string>) =>
trigger$.pipe(
this.delayWhenCustomerNumberNotExists,
tap(() => this.beforeFetchCoverOrderItems()),
withLatestFrom(this.customerNumber$),
switchMap(([_, customerNumber]) =>
switchMap((customerNumber) =>
this._pickupShelfIOService
.getOrderItemsByCustomerNumber({
customerNumber,