diff --git a/src/app/shared/search/search-filters/search-filter/search-facet-filter/search-facet-filter.component.ts b/src/app/shared/search/search-filters/search-filter/search-facet-filter/search-facet-filter.component.ts index 2d9e8d6642..8872473ca7 100644 --- a/src/app/shared/search/search-filters/search-filter/search-facet-filter/search-facet-filter.component.ts +++ b/src/app/shared/search/search-filters/search-filter/search-facet-filter/search-facet-filter.component.ts @@ -265,38 +265,27 @@ export class SearchFacetFilterComponent implements OnInit, OnDestroy { } protected retrieveFilterValues(useCachedVersionIfAvailable = true): Observable> { - const facetValues$: Observable<{ values: Observable>, page: number}> = observableCombineLatest([this.searchOptions$, this.currentPage]).pipe( - switchMap(([options, page]: [SearchOptions, number]) => { - return this.searchService.getFacetValuesFor(this.filterConfig, page, options, null, useCachedVersionIfAvailable) - .pipe( - getFirstSucceededRemoteData(), - tap((rd: RemoteData) => { - this.isLastPage$.next(hasNoValue(rd?.payload?.next)); - }), - map((rd: RemoteData) => ({ - values: observableOf(rd), - page: page - }) - ) - ); - }) + const facetValues$: Observable> = observableCombineLatest([this.searchOptions$, this.currentPage]).pipe( + switchMap(([options, page]: [SearchOptions, number]) => this.searchService.getFacetValuesFor(this.filterConfig, page, options, null, useCachedVersionIfAvailable)), + getFirstSucceededRemoteData(), + tap((rd: RemoteData) => { + this.isLastPage$.next(hasNoValue(rd?.payload?.next)); + }), ); let filterValues: Observable>[] = []; return facetValues$.pipe( - mergeMap((facetOutcome: { values: Observable>, page: number}) => { - const newValues$ = facetOutcome.values; - + mergeMap((newValues: RemoteData) => { if (this.collapseNextUpdate) { this.showFirstPageOnly(); - facetOutcome.page = 1; + filterValues = []; this.collapseNextUpdate = false; } - if (facetOutcome.page === 1) { + if (newValues.payload.pageInfo.currentPage === 1) { filterValues = []; } - filterValues = [...filterValues, newValues$]; + filterValues = [...filterValues, observableOf(newValues)]; return this.rdbs.aggregate(filterValues); }), diff --git a/src/app/shared/search/search-filters/search-filter/search-hierarchy-filter/search-hierarchy-filter.component.spec.ts b/src/app/shared/search/search-filters/search-filter/search-hierarchy-filter/search-hierarchy-filter.component.spec.ts index 759fc12441..bb2619e95a 100644 --- a/src/app/shared/search/search-filters/search-filter/search-hierarchy-filter/search-hierarchy-filter.component.spec.ts +++ b/src/app/shared/search/search-filters/search-filter/search-hierarchy-filter/search-hierarchy-filter.component.spec.ts @@ -62,6 +62,9 @@ describe('SearchHierarchyFilterComponent', () => { value: value3, }, ], + pageInfo: { + currentPage: 1, + }, } as Partial as FacetValues; const searchFilterServiceStub = {