41 lines
1.5 KiB
JavaScript
41 lines
1.5 KiB
JavaScript
import axios from '~/lib/utils/axios_utils';
|
|
import * as types from './mutation_types';
|
|
import { parseCodeclimateMetrics, doCodeClimateComparison } from './utils/codequality_comparison';
|
|
|
|
export const setPaths = ({ commit }, paths) => commit(types.SET_PATHS, paths);
|
|
|
|
export const fetchReports = ({ state, dispatch, commit }, diffFeatureFlagEnabled) => {
|
|
commit(types.REQUEST_REPORTS);
|
|
|
|
if (diffFeatureFlagEnabled) {
|
|
return axios
|
|
.get(state.reportsPath)
|
|
.then(({ data }) => {
|
|
return dispatch('receiveReportsSuccess', {
|
|
newIssues: parseCodeclimateMetrics(data.new_errors, state.headBlobPath),
|
|
resolvedIssues: parseCodeclimateMetrics(data.resolved_errors, state.baseBlobPath),
|
|
});
|
|
})
|
|
.catch((error) => dispatch('receiveReportsError', error));
|
|
}
|
|
if (!state.basePath) {
|
|
return dispatch('receiveReportsError');
|
|
}
|
|
return Promise.all([axios.get(state.headPath), axios.get(state.basePath)])
|
|
.then((results) =>
|
|
doCodeClimateComparison(
|
|
parseCodeclimateMetrics(results[0].data, state.headBlobPath),
|
|
parseCodeclimateMetrics(results[1].data, state.baseBlobPath),
|
|
),
|
|
)
|
|
.then((data) => dispatch('receiveReportsSuccess', data))
|
|
.catch((error) => dispatch('receiveReportsError', error));
|
|
};
|
|
|
|
export const receiveReportsSuccess = ({ commit }, data) => {
|
|
commit(types.RECEIVE_REPORTS_SUCCESS, data);
|
|
};
|
|
|
|
export const receiveReportsError = ({ commit }, error) => {
|
|
commit(types.RECEIVE_REPORTS_ERROR, error);
|
|
};
|