Fix Filters Empty on First Open

This commit is contained in:
Sebastian
2020-07-30 17:20:23 +02:00
parent 5a8c6111ff
commit 1b65354900

View File

@@ -1,7 +1,7 @@
import { Injectable, OnDestroy } from '@angular/core';
import { Observable, BehaviorSubject, Subject, combineLatest } from 'rxjs';
import { SelectFilter, Filter, SelectFilterOption } from '../../filter';
import { tap, startWith, map, filter, takeUntil } from 'rxjs/operators';
import { startWith, map, filter, takeUntil, take } from 'rxjs/operators';
import { SearchStateFacade } from '../../../store/customer';
import { flatten } from '../../../shared/utils';
import { isNullOrUndefined } from 'util';
@@ -61,12 +61,7 @@ export class ShelfFilterService implements OnDestroy {
get pendingFiltersShouldUpdate$() {
return combineLatest([
this.filters$.pipe(filter((filters) => !isNullOrUndefined(filters))),
this.resetFilters$.pipe(
startWith(),
tap(() => {
this.pendingFilters = null;
})
),
this.resetFilters$.pipe(startWith()),
]);
}
@@ -81,12 +76,14 @@ export class ShelfFilterService implements OnDestroy {
}
initPendingFilters() {
this.setInitialPendingFilters();
this.pendingFiltersShouldUpdate$
.pipe(takeUntil(this.destroy$))
.subscribe(([filters]) => {
this.pendingFilters = filters.map(cloneFilter);
this.setInitialFilterGroupLastChanged(filters);
});
.pipe(
takeUntil(this.destroy$),
map(([filters]) => filters)
)
.subscribe(this.updatePendingFilters);
}
updateFilters(updatedFilters: SelectFilter[]) {
@@ -106,6 +103,21 @@ export class ShelfFilterService implements OnDestroy {
this.overlayClosed$.next();
}
private setInitialPendingFilters() {
this.filters$
.pipe(
filter((filters) => !isNullOrUndefined(filters)),
take(1),
takeUntil(this.destroy$)
)
.subscribe(this.updatePendingFilters);
}
private updatePendingFilters = (filters: SelectFilter[]) => {
this.pendingFilters = filters.map(cloneFilter);
this.setInitialFilterGroupLastChanged(filters);
};
private setInitialFilterGroupLastChanged(filters: SelectFilter[]) {
if (!this.lastFilterGroupChanged$.value) {
this.lastFilterGroupChanged$.next(filters[0]);