@yext/search-ui-react
Version:
A library of React Components for powering Yext Search integrations
69 lines (64 loc) • 1.95 kB
text/typescript
import {
SearchActions,
AutocompleteResponse,
GenerativeDirectAnswerResponse,
SearchIntent,
SearchTypeEnum
} from '@yext/search-headless-react';
/**
* Executes a universal/vertical search.
*
* @public
*/
export async function executeSearch(searchActions: SearchActions): Promise<void> {
const isVertical = searchActions.state.meta.searchType === SearchTypeEnum.Vertical;
try {
isVertical
? searchActions.executeVerticalQuery()
: searchActions.executeUniversalQuery();
} catch (e) {
console.error(`Error occured executing a ${isVertical ? 'vertical' : 'universal'} search.\n`, e);
}
}
/**
* Executes a universal/vertical autocomplete search and return the corresponding response.
*
* @public
*/
export async function executeAutocomplete(
searchActions: SearchActions
): Promise<AutocompleteResponse | undefined> {
const isVertical = searchActions.state.meta.searchType === SearchTypeEnum.Vertical;
try {
return isVertical
? searchActions.executeVerticalAutocomplete()
: searchActions.executeUniversalAutocomplete();
} catch (e) {
console.error(`Error occured executing a ${isVertical ? 'vertical' : 'universal'} autocomplete search.\n`, e);
}
}
/**
* Get search intents of the current query stored in headless using autocomplete request.
*
* @public
*/
export async function getSearchIntents(
searchActions: SearchActions
): Promise<SearchIntent[] | undefined> {
const results = await executeAutocomplete(searchActions);
return results?.inputIntents;
}
/**
* Executes a generative direct answer and return the corresponding response.
*
* @public
*/
export async function executeGenerativeDirectAnswer(
searchActions: SearchActions
): Promise<GenerativeDirectAnswerResponse | undefined> {
try {
return await searchActions.executeGenerativeDirectAnswer();
} catch (e) {
console.error(`Error occured executing generative direct answer.\n`, e);
}
}