Commit b24a55a9 authored by Phil Hughes's avatar Phil Hughes

Improve error message across IDE store modules

Closes #47323
parent d4a4f1ed
...@@ -198,11 +198,18 @@ export const commitChanges = ({ commit, state, getters, dispatch, rootState, roo ...@@ -198,11 +198,18 @@ export const commitChanges = ({ commit, state, getters, dispatch, rootState, roo
if (err.response.status === 400) { if (err.response.status === 400) {
$('#ide-create-branch-modal').modal('show'); $('#ide-create-branch-modal').modal('show');
} else { } else {
let errMsg = __('Error committing changes. Please try again.'); dispatch(
if (err.response.data && err.response.data.message) { 'setErrorMessage',
errMsg += ` (${stripHtml(err.response.data.message)})`; {
} text: __('An error accured whilst committing your changes.'),
flash(errMsg, 'alert', document, null, false, true); action: () =>
dispatch('commitChanges').then(() =>
dispatch('setErrorMessage', null, { root: true }),
),
actionText: __('Please try again'),
},
{ root: true },
);
window.dispatchEvent(new Event('resize')); window.dispatchEvent(new Event('resize'));
} }
......
import { __ } from '../../../../locale'; import { __ } from '../../../../locale';
import Api from '../../../../api'; import Api from '../../../../api';
import flash from '../../../../flash';
import router from '../../../ide_router'; import router from '../../../ide_router';
import { scopes } from './constants'; import { scopes } from './constants';
import * as types from './mutation_types'; import * as types from './mutation_types';
...@@ -8,8 +7,20 @@ import * as rootTypes from '../../mutation_types'; ...@@ -8,8 +7,20 @@ import * as rootTypes from '../../mutation_types';
export const requestMergeRequests = ({ commit }, type) => export const requestMergeRequests = ({ commit }, type) =>
commit(types.REQUEST_MERGE_REQUESTS, type); commit(types.REQUEST_MERGE_REQUESTS, type);
export const receiveMergeRequestsError = ({ commit }, type) => { export const receiveMergeRequestsError = ({ commit, dispatch }, { type, search }) => {
flash(__('Error loading merge requests.')); dispatch(
'setErrorMessage',
{
text: __('Error loading merge requests.'),
action: payload =>
dispatch('fetchMergeRequests', payload).then(() =>
dispatch('setErrorMessage', null, { root: true }),
),
actionText: __('Please try again'),
actionPayload: { type, search },
},
{ root: true },
);
commit(types.RECEIVE_MERGE_REQUESTS_ERROR, type); commit(types.RECEIVE_MERGE_REQUESTS_ERROR, type);
}; };
export const receiveMergeRequestsSuccess = ({ commit }, { type, data }) => export const receiveMergeRequestsSuccess = ({ commit }, { type, data }) =>
...@@ -22,7 +33,7 @@ export const fetchMergeRequests = ({ dispatch, state: { state } }, { type, searc ...@@ -22,7 +33,7 @@ export const fetchMergeRequests = ({ dispatch, state: { state } }, { type, searc
Api.mergeRequests({ scope, state, search }) Api.mergeRequests({ scope, state, search })
.then(({ data }) => dispatch('receiveMergeRequestsSuccess', { type, data })) .then(({ data }) => dispatch('receiveMergeRequestsSuccess', { type, data }))
.catch(() => dispatch('receiveMergeRequestsError', type)); .catch(() => dispatch('receiveMergeRequestsError', { type, search }));
}; };
export const resetMergeRequests = ({ commit }, type) => commit(types.RESET_MERGE_REQUESTS, type); export const resetMergeRequests = ({ commit }, type) => commit(types.RESET_MERGE_REQUESTS, type);
......
...@@ -18,10 +18,27 @@ export const stopPipelinePolling = () => { ...@@ -18,10 +18,27 @@ export const stopPipelinePolling = () => {
export const restartPipelinePolling = () => { export const restartPipelinePolling = () => {
if (eTagPoll) eTagPoll.restart(); if (eTagPoll) eTagPoll.restart();
}; };
export const forcePipelineRequest = () => {
if (eTagPoll) eTagPoll.makeRequest();
};
export const requestLatestPipeline = ({ commit }) => commit(types.REQUEST_LATEST_PIPELINE); export const requestLatestPipeline = ({ commit }) => commit(types.REQUEST_LATEST_PIPELINE);
export const receiveLatestPipelineError = ({ commit, dispatch }) => { export const receiveLatestPipelineError = ({ commit, dispatch }, err) => {
flash(__('There was an error loading latest pipeline')); if (err.response.status !== 404) {
dispatch(
'setErrorMessage',
{
text: __('An error occured whilst fetching the latest pipline.'),
action: () =>
dispatch('forcePipelineRequest').then(() =>
dispatch('setErrorMessage', null, { root: true }),
),
actionText: __('Please try again'),
actionPayload: null,
},
{ root: true },
);
}
commit(types.RECEIVE_LASTEST_PIPELINE_ERROR); commit(types.RECEIVE_LASTEST_PIPELINE_ERROR);
dispatch('stopPipelinePolling'); dispatch('stopPipelinePolling');
}; };
...@@ -46,11 +63,11 @@ export const fetchLatestPipeline = ({ dispatch, rootGetters }) => { ...@@ -46,11 +63,11 @@ export const fetchLatestPipeline = ({ dispatch, rootGetters }) => {
method: 'lastCommitPipelines', method: 'lastCommitPipelines',
data: { getters: rootGetters }, data: { getters: rootGetters },
successCallback: ({ data }) => dispatch('receiveLatestPipelineSuccess', data), successCallback: ({ data }) => dispatch('receiveLatestPipelineSuccess', data),
errorCallback: () => dispatch('receiveLatestPipelineError'), errorCallback: err => dispatch('receiveLatestPipelineError', err),
}); });
if (!Visibility.hidden()) { if (!Visibility.hidden()) {
eTagPoll.makeRequest(); dispatch('forcePipelineRequest');
} }
Visibility.change(() => { Visibility.change(() => {
...@@ -63,9 +80,19 @@ export const fetchLatestPipeline = ({ dispatch, rootGetters }) => { ...@@ -63,9 +80,19 @@ export const fetchLatestPipeline = ({ dispatch, rootGetters }) => {
}; };
export const requestJobs = ({ commit }, id) => commit(types.REQUEST_JOBS, id); export const requestJobs = ({ commit }, id) => commit(types.REQUEST_JOBS, id);
export const receiveJobsError = ({ commit }, id) => { export const receiveJobsError = ({ commit, dispatch }, stage) => {
flash(__('There was an error loading jobs')); dispatch(
commit(types.RECEIVE_JOBS_ERROR, id); 'setErrorMessage',
{
text: __('An error occured whilst loading the pipelines jobs.'),
action: stage =>
dispatch('fetchJobs', stage).then(() => dispatch('setErrorMessage', null, { root: true })),
actionText: __('Please try again'),
actionPayload: stage,
},
{ root: true },
);
commit(types.RECEIVE_JOBS_ERROR, stage.id);
}; };
export const receiveJobsSuccess = ({ commit }, { id, data }) => export const receiveJobsSuccess = ({ commit }, { id, data }) =>
commit(types.RECEIVE_JOBS_SUCCESS, { id, data }); commit(types.RECEIVE_JOBS_SUCCESS, { id, data });
...@@ -76,7 +103,7 @@ export const fetchJobs = ({ dispatch }, stage) => { ...@@ -76,7 +103,7 @@ export const fetchJobs = ({ dispatch }, stage) => {
axios axios
.get(stage.dropdownPath) .get(stage.dropdownPath)
.then(({ data }) => dispatch('receiveJobsSuccess', { id: stage.id, data })) .then(({ data }) => dispatch('receiveJobsSuccess', { id: stage.id, data }))
.catch(() => dispatch('receiveJobsError', stage.id)); .catch(() => dispatch('receiveJobsError', stage));
}; };
export const toggleStageCollapsed = ({ commit }, stageId) => export const toggleStageCollapsed = ({ commit }, stageId) =>
...@@ -90,8 +117,18 @@ export const setDetailJob = ({ commit, dispatch }, job) => { ...@@ -90,8 +117,18 @@ export const setDetailJob = ({ commit, dispatch }, job) => {
}; };
export const requestJobTrace = ({ commit }) => commit(types.REQUEST_JOB_TRACE); export const requestJobTrace = ({ commit }) => commit(types.REQUEST_JOB_TRACE);
export const receiveJobTraceError = ({ commit }) => { export const receiveJobTraceError = ({ commit, dispatch }) => {
flash(__('Error fetching job trace')); dispatch(
'setErrorMessage',
{
text: __('An error occured whilst fetching the job trace.'),
action: () =>
dispatch('fetchJobTrace').then(() => dispatch('setErrorMessage', null, { root: true })),
actionText: __('Please try again'),
actionPayload: null,
},
{ root: true },
);
commit(types.RECEIVE_JOB_TRACE_ERROR); commit(types.RECEIVE_JOB_TRACE_ERROR);
}; };
export const receiveJobTraceSuccess = ({ commit }, data) => export const receiveJobTraceSuccess = ({ commit }, data) =>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment