mirror of
https://dev.azure.com/hugendubel/ISA/_git/ISA-Frontend
synced 2025-12-31 09:37:15 +01:00
Merge branch 'master' into release/3.4
This commit is contained in:
@@ -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() {
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user