diff options
Diffstat (limited to 'app/assets/javascripts/issues/related_merge_requests/store/actions.js')
-rw-r--r-- | app/assets/javascripts/issues/related_merge_requests/store/actions.js | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/app/assets/javascripts/issues/related_merge_requests/store/actions.js b/app/assets/javascripts/issues/related_merge_requests/store/actions.js new file mode 100644 index 00000000000..94abb50de89 --- /dev/null +++ b/app/assets/javascripts/issues/related_merge_requests/store/actions.js @@ -0,0 +1,36 @@ +import createFlash from '~/flash'; +import axios from '~/lib/utils/axios_utils'; +import { normalizeHeaders } from '~/lib/utils/common_utils'; +import { __ } from '~/locale'; +import * as types from './mutation_types'; + +const REQUEST_PAGE_COUNT = 100; + +export const setInitialState = ({ commit }, props) => { + commit(types.SET_INITIAL_STATE, props); +}; + +export const requestData = ({ commit }) => commit(types.REQUEST_DATA); + +export const receiveDataSuccess = ({ commit }, data) => commit(types.RECEIVE_DATA_SUCCESS, data); + +export const receiveDataError = ({ commit }) => commit(types.RECEIVE_DATA_ERROR); + +export const fetchMergeRequests = ({ state, dispatch }) => { + dispatch('requestData'); + + return axios + .get(`${state.apiEndpoint}?per_page=${REQUEST_PAGE_COUNT}`) + .then((res) => { + const { headers, data } = res; + const total = Number(normalizeHeaders(headers)['X-TOTAL']) || 0; + + dispatch('receiveDataSuccess', { data, total }); + }) + .catch(() => { + dispatch('receiveDataError'); + createFlash({ + message: __('Something went wrong while fetching related merge requests.'), + }); + }); +}; |