apisearch-ui
Version:
Javascript User Interface of Apisearch.
94 lines (82 loc) • 2.15 kB
text/typescript
/**
* Search actions
*/
import {Repository} from "apisearch";
import {Query} from "apisearch";
import {APISEARCH_DISPATCHER} from "../../Constants";
import container from "../../Container";
import Clone from "../Clone";
/**
* Initial Search
*
* @param environmentId
* @param currentQuery
* @param autocomplete
* @param searchableFields
* @param queryOperator
*/
export function initialSearchSetup(
environmentId: string,
currentQuery: Query,
autocomplete: boolean,
searchableFields: string[],
queryOperator: string,
) {
const dispatcher = container.get(`${APISEARCH_DISPATCHER}__${environmentId}`);
const clonedQuery = Clone.object(currentQuery);
clonedQuery.page = 1;
clonedQuery.queryOperator = queryOperator;
if (searchableFields.length > 0) {
clonedQuery.searchableFields = searchableFields;
}
if (autocomplete) {
clonedQuery.enableAutocomplete();
}
dispatcher.dispatch("UPDATE_APISEARCH_SETUP", {
query: clonedQuery,
});
}
/**
* Search action
*
* @param environmentId
* @param currentQuery
* @param repository
* @param queryText
* @param visibleResults
*/
export function simpleSearchAction(
environmentId: string,
currentQuery: Query,
repository: Repository,
queryText: string,
visibleResults: boolean,
) {
window.postMessage({
name: "apisearch_scroll_top",
}, "*");
const dispatcher = container.get(`${APISEARCH_DISPATCHER}__${environmentId}`);
const clonedQuery = Clone.object(currentQuery);
clonedQuery.filters._query.values = [queryText];
clonedQuery.page = 1;
if (!visibleResults) {
dispatcher.dispatch("RENDER_FETCHED_DATA", {
query: clonedQuery,
result: null,
visibleResults,
});
return;
}
repository
.query(clonedQuery)
.then((result) => {
dispatcher.dispatch("RENDER_FETCHED_DATA", {
query: clonedQuery,
result,
visibleResults,
});
})
.catch((error) => {
// Do nothing
});
}