debian-mirror-gitlab/app/assets/javascripts/ref/stores/mutations.js
2020-08-09 17:41:57 +05:30

91 lines
2.2 KiB
JavaScript

import * as types from './mutation_types';
import { X_TOTAL_HEADER } from '../constants';
import { convertObjectPropsToCamelCase } from '~/lib/utils/common_utils';
import httpStatusCodes from '~/lib/utils/http_status';
export default {
[types.SET_PROJECT_ID](state, projectId) {
state.projectId = projectId;
},
[types.SET_SELECTED_REF](state, selectedRef) {
state.selectedRef = selectedRef;
},
[types.SET_QUERY](state, query) {
state.query = query;
},
[types.REQUEST_START](state) {
state.requestCount += 1;
},
[types.REQUEST_FINISH](state) {
state.requestCount -= 1;
},
[types.RECEIVE_BRANCHES_SUCCESS](state, response) {
state.matches.branches = {
list: convertObjectPropsToCamelCase(response.data).map(b => ({
name: b.name,
default: b.default,
})),
totalCount: parseInt(response.headers[X_TOTAL_HEADER], 10),
error: null,
};
},
[types.RECEIVE_BRANCHES_ERROR](state, error) {
state.matches.branches = {
list: [],
totalCount: 0,
error,
};
},
[types.RECEIVE_TAGS_SUCCESS](state, response) {
state.matches.tags = {
list: convertObjectPropsToCamelCase(response.data).map(b => ({
name: b.name,
})),
totalCount: parseInt(response.headers[X_TOTAL_HEADER], 10),
error: null,
};
},
[types.RECEIVE_TAGS_ERROR](state, error) {
state.matches.tags = {
list: [],
totalCount: 0,
error,
};
},
[types.RECEIVE_COMMITS_SUCCESS](state, response) {
const commit = convertObjectPropsToCamelCase(response.data);
state.matches.commits = {
list: [
{
name: commit.shortId,
value: commit.id,
subtitle: commit.title,
},
],
totalCount: 1,
error: null,
};
},
[types.RECEIVE_COMMITS_ERROR](state, error) {
state.matches.commits = {
list: [],
totalCount: 0,
// 404's are expected when the search query doesn't match any commits
// and shouldn't be treated as an actual error
error: error.response?.status !== httpStatusCodes.NOT_FOUND ? error : null,
};
},
[types.RESET_COMMIT_MATCHES](state) {
state.matches.commits = {
list: [],
totalCount: 0,
error: null,
};
},
};