59 lines
1.7 KiB
JavaScript
59 lines
1.7 KiB
JavaScript
import Vue from 'vue';
|
|
import * as types from './mutation_types';
|
|
|
|
export default {
|
|
[types.SET_FILTER](state, filter) {
|
|
state.filter = filter;
|
|
},
|
|
|
|
[types.REQUEST_REPOS](state) {
|
|
state.isLoadingRepos = true;
|
|
},
|
|
|
|
[types.RECEIVE_REPOS_SUCCESS](
|
|
state,
|
|
{ importedProjects, providerRepos, incompatibleRepos, namespaces },
|
|
) {
|
|
state.isLoadingRepos = false;
|
|
|
|
state.importedProjects = importedProjects;
|
|
state.providerRepos = providerRepos;
|
|
state.incompatibleRepos = incompatibleRepos ?? [];
|
|
state.namespaces = namespaces;
|
|
},
|
|
|
|
[types.RECEIVE_REPOS_ERROR](state) {
|
|
state.isLoadingRepos = false;
|
|
},
|
|
|
|
[types.REQUEST_IMPORT](state, repoId) {
|
|
state.reposBeingImported.push(repoId);
|
|
},
|
|
|
|
[types.RECEIVE_IMPORT_SUCCESS](state, { importedProject, repoId }) {
|
|
const existingRepoIndex = state.reposBeingImported.indexOf(repoId);
|
|
if (state.reposBeingImported.includes(repoId))
|
|
state.reposBeingImported.splice(existingRepoIndex, 1);
|
|
|
|
const providerRepoIndex = state.providerRepos.findIndex(
|
|
providerRepo => providerRepo.id === repoId,
|
|
);
|
|
state.providerRepos.splice(providerRepoIndex, 1);
|
|
state.importedProjects.unshift(importedProject);
|
|
},
|
|
|
|
[types.RECEIVE_IMPORT_ERROR](state, repoId) {
|
|
const repoIndex = state.reposBeingImported.indexOf(repoId);
|
|
if (state.reposBeingImported.includes(repoId)) state.reposBeingImported.splice(repoIndex, 1);
|
|
},
|
|
|
|
[types.RECEIVE_JOBS_SUCCESS](state, updatedProjects) {
|
|
updatedProjects.forEach(updatedProject => {
|
|
const existingProject = state.importedProjects.find(
|
|
importedProject => importedProject.id === updatedProject.id,
|
|
);
|
|
|
|
Vue.set(existingProject, 'importStatus', updatedProject.importStatus);
|
|
});
|
|
},
|
|
};
|