[ACS-9010] Loading spinner is not shown on search results page when filtering for files or folders (#10434)

This commit is contained in:
dominikiwanekhyland 2024-11-27 18:41:49 +01:00 committed by GitHub
parent 48e9d56453
commit 5461bedb3e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 18 additions and 5 deletions

View File

@ -15,17 +15,17 @@
* limitations under the License.
*/
import { Subject, Observable, from, ReplaySubject, BehaviorSubject } from 'rxjs';
import { BehaviorSubject, from, Observable, ReplaySubject, Subject } from 'rxjs';
import { AppConfigService } from '@alfresco/adf-core';
import {
SearchRequest,
RequestFacetFields,
RequestSortDefinitionInner,
ResultSetPaging,
RequestHighlight,
RequestScope,
RequestSortDefinitionInner,
ResultSetPaging,
SEARCH_LANGUAGE,
SearchApi,
SEARCH_LANGUAGE
SearchRequest
} from '@alfresco/js-api';
import { SearchCategory } from '../models/search-category.interface';
import { FilterQuery } from '../models/filter-query.interface';
@ -68,6 +68,9 @@ export abstract class BaseQueryBuilderService {
/* Stream that emits search forms */
searchForms = new ReplaySubject<SearchForm[]>(1);
/* Stream that emits void when change in filterQueries */
filterQueryUpdate = new Subject<void>();
/* Stream that emits the initial value for some or all search filters */
populateFilters = new BehaviorSubject<{ [key: string]: any }>({});
@ -247,6 +250,7 @@ export abstract class BaseQueryBuilderService {
const existing = this.filterQueries.find((filterQuery) => filterQuery.query === query);
if (!existing) {
this.filterQueries.push({ query });
this.filterQueryUpdate.next();
}
}
}
@ -259,6 +263,7 @@ export abstract class BaseQueryBuilderService {
removeFilterQuery(query: string): void {
if (query) {
this.filterQueries = this.filterQueries.filter((filterQuery) => filterQuery.query !== query);
this.filterQueryUpdate.next();
}
}

View File

@ -201,6 +201,14 @@ describe('SearchQueryBuilder', () => {
expect(builder.filterQueries.length).toBe(2);
});
it('should call filterQueryUpdate after adding or removing filterQuery', () => {
const builder = createQueryBuilder();
spyOn(builder.filterQueryUpdate, 'next');
builder.addFilterQuery('q1');
builder.removeFilterQuery('q1');
expect(builder.filterQueryUpdate.next).toHaveBeenCalledTimes(2);
});
it('should fetch facet query from config', () => {
const config: SearchConfiguration = {
categories: [],