diff options
Diffstat (limited to 'app/assets/javascripts/header_search/store/actions.js')
-rw-r--r-- | app/assets/javascripts/header_search/store/actions.js | 29 |
1 files changed, 26 insertions, 3 deletions
diff --git a/app/assets/javascripts/header_search/store/actions.js b/app/assets/javascripts/header_search/store/actions.js index 3a86dcca409..a0f9e594506 100644 --- a/app/assets/javascripts/header_search/store/actions.js +++ b/app/assets/javascripts/header_search/store/actions.js @@ -1,10 +1,26 @@ +import { omitBy, isNil } from 'lodash'; +import { objectToQuery } from '~/lib/utils/url_utility'; import axios from '~/lib/utils/axios_utils'; +import { FETCH_TYPES } from '../constants'; import * as types from './mutation_types'; -export const fetchAutocompleteOptions = ({ commit, getters }) => { - commit(types.REQUEST_AUTOCOMPLETE); +export const autocompleteQuery = ({ state, fetchType }) => { + const query = omitBy( + { + term: state.search, + project_id: state.searchContext?.project?.id, + project_ref: state.searchContext?.ref, + filter: fetchType, + }, + isNil, + ); + + return `${state.autocompletePath}?${objectToQuery(query)}`; +}; + +const doFetch = ({ commit, state, fetchType }) => { return axios - .get(getters.autocompleteQuery) + .get(autocompleteQuery({ state, fetchType })) .then(({ data }) => { commit(types.RECEIVE_AUTOCOMPLETE_SUCCESS, data); }) @@ -13,6 +29,13 @@ export const fetchAutocompleteOptions = ({ commit, getters }) => { }); }; +export const fetchAutocompleteOptions = ({ commit, state }) => { + commit(types.REQUEST_AUTOCOMPLETE); + const promises = FETCH_TYPES.map((fetchType) => doFetch({ commit, state, fetchType })); + + return Promise.all(promises); +}; + export const clearAutocomplete = ({ commit }) => { commit(types.CLEAR_AUTOCOMPLETE); }; |