return;
}
- try {
- const params = getParams(dataExplorer, searchValue);
-
- const responses = await Promise.all(sessions.map(session =>
- this.services.groupsService.contents('', params, session)
- ));
-
- const initial = {
- itemsAvailable: 0,
- items: [] as GroupContentsResource[],
- kind: '',
- offset: 0,
- limit: 10
- };
-
- const mergedResponse = responses.reduce((merged, current) => ({
- ...merged,
- itemsAvailable: merged.itemsAvailable + current.itemsAvailable,
- items: merged.items.concat(current.items)
- }), initial);
-
- api.dispatch(updateResources(mergedResponse.items));
-
- api.dispatch(criteriaChanged
- ? setItems(mergedResponse)
- : appendItems(mergedResponse));
-
- } catch {
- api.dispatch(couldNotFetchSearchResults());
+ const initial = {
+ itemsAvailable: 0,
+ items: [] as GroupContentsResource[],
+ kind: '',
+ offset: 0,
+ limit: 10
+ };
+
+ if (criteriaChanged) {
+ api.dispatch(setItems(initial));
}
+
+ sessions.map(session => {
+ const params = getParams(dataExplorer, searchValue, session.apiRevision);
+ this.services.groupsService.contents('', params, session)
+ .then((response) => {
+ api.dispatch(updateResources(response.items));
+ api.dispatch(appendItems(response));
+ }).catch(() => {
+ api.dispatch(couldNotFetchSearchResults(session.clusterId));
+ });
+ }
+ );
}
}
const typeFilters = (columns: DataColumns<string>) => serializeResourceTypeFilters(getDataExplorerColumnFilters(columns, ProjectPanelColumnNames.TYPE));
-export const getParams = (dataExplorer: DataExplorer, query: string) => ({
+const getParams = (dataExplorer: DataExplorer, query: string, apiRevision: number) => ({
...dataExplorerToListParams(dataExplorer),
filters: joinFilters(
- queryToFilters(query),
+ queryToFilters(query, apiRevision),
typeFilters(dataExplorer.columns)
),
order: getOrder(dataExplorer),
items: listResults.items.map(resource => resource.uuid),
});
-const couldNotFetchSearchResults = () =>
+const couldNotFetchSearchResults = (cluster: string) =>
snackbarActions.OPEN_SNACKBAR({
- message: `Could not fetch search results for some sessions.`,
+ message: `Could not fetch search results from ${cluster}.`,
kind: SnackbarKind.ERROR
});