async onSearch()

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)
      );
    });
  }