@empathyco/x-components
Version:
Empathy X Components
48 lines (45 loc) • 1.65 kB
JavaScript
import { getHashFromQueryPreviewItem } from '../../utils/get-hash-from-query-preview.js';
/**
* Default implementation for the {@link QueriesPreviewActions.fetchAndSaveQueryPreview}.
*
* @param _context - The {@link https://vuex.vuejs.org/guide/actions.html | context} of the actions,
* provided by Vuex.
* @param request - The query preview request to make.
* @returns A Promise of a SearchResponse when it fetches the results.
*
* @public
*/
const fetchAndSaveQueryPreview = async ({ dispatch, commit }, request) => {
const { query } = request;
if (!query) {
return;
}
const queryPreviewItem = {
request,
results: [],
status: 'loading',
totalResults: 0,
instances: 1,
};
commit('setQueryPreviewCached', queryPreviewItem);
return dispatch('fetchQueryPreview', request)
.then(response => {
commit('setQueryPreviewCached', {
request,
results: response?.results ?? [],
status: 'success',
totalResults: response?.totalResults ?? 0,
instances: 1,
displayTagging: response?.displayTagging ?? undefined,
queryTagging: response?.queryTagging ?? undefined,
});
})
.catch(error => {
console.error(error);
const lang = request.extraParams ? request.extraParams.lang : '';
const queryPreviewHash = getHashFromQueryPreviewItem(queryPreviewItem, lang);
commit('setStatus', { queryPreviewHash, status: 'error' });
});
};
export { fetchAndSaveQueryPreview };
//# sourceMappingURL=fetch-and-save-query-preview.action.js.map