in packages/search-ui-workplace-search-connector/src/WorkplaceSearchAPIConnector.ts [271:320]
async onSearch(
state: RequestState,
queryConfig: QueryConfig
): Promise<SearchState> {
// Do not perform a search if not logged in
if (!this.state.isLoggedIn) {
return Promise.reject(new Error(INVALID_CREDENTIALS));
}
const {
current,
filters,
resultsPerPage,
sortDirection,
sortField,
sortList,
...restOfQueryConfig
} = queryConfig;
const { query, ...optionsFromState } = adaptRequest({
...state,
...(current !== undefined && { current }),
...(filters !== undefined && { filters }),
...(resultsPerPage !== undefined && { resultsPerPage }),
...(sortDirection !== undefined && { sortDirection }),
...(sortField !== undefined && { sortField }),
...(sortList !== undefined && { sortList })
});
const withQueryConfigOptions = {
...restOfQueryConfig,
...optionsFromState
};
const options = {
...removeInvalidFields(withQueryConfigOptions)
};
return this.beforeSearchCall(options, async (newOptions) => {
const apiUrl = `${this.enterpriseSearchBase}/api/ws/v1/search`;
const responseJson = await this.performFetchRequest(apiUrl, {
query,
...newOptions
});
return adaptResponse(
responseJson,
buildResponseAdapterOptions(queryConfig)
);
});
}