2018-11-27 13:14:10 +00:00
|
|
|
// Copyright (C) 2018 Storj Labs, Inc.
|
|
|
|
// See LICENSE for copying information.
|
|
|
|
|
|
|
|
import {
|
|
|
|
PROJECTS_MUTATIONS
|
|
|
|
} from "../mutationConstants";
|
2018-11-28 09:43:43 +00:00
|
|
|
import { createProject, fetchProjects } from "@/api/projects";
|
2018-11-27 13:14:10 +00:00
|
|
|
|
|
|
|
export const projectsModule = {
|
|
|
|
state: {
|
|
|
|
projects: [],
|
|
|
|
selectedProject: {
|
2018-11-28 09:43:43 +00:00
|
|
|
name: "Choose Project",
|
2018-11-27 13:14:10 +00:00
|
|
|
id: "",
|
2018-11-28 09:43:43 +00:00
|
|
|
description: "",
|
2018-11-27 13:14:10 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
mutations: {
|
|
|
|
[PROJECTS_MUTATIONS.CREATE](state: any, createdProject: Project): void {
|
2018-11-28 09:43:43 +00:00
|
|
|
state.projects.push(createdProject);
|
2018-11-27 13:14:10 +00:00
|
|
|
},
|
|
|
|
[PROJECTS_MUTATIONS.FETCH](state: any, projects: Project[]): void {
|
2018-11-28 09:43:43 +00:00
|
|
|
state.projects = projects;
|
2018-11-27 13:14:10 +00:00
|
|
|
},
|
2018-11-28 09:43:43 +00:00
|
|
|
[PROJECTS_MUTATIONS.SELECT](state: any, projectID: string): void {
|
|
|
|
const selected = state.projects.find((project: any) => project.id === projectID);
|
2018-11-27 13:14:10 +00:00
|
|
|
|
2018-11-28 09:43:43 +00:00
|
|
|
if (!selected) {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
state.selectedProject = selected;
|
|
|
|
},
|
|
|
|
},
|
2018-11-27 13:14:10 +00:00
|
|
|
actions: {
|
|
|
|
fetchProjects: async function({commit}: any) {
|
2018-11-28 09:43:43 +00:00
|
|
|
let response = await fetchProjects();
|
|
|
|
|
|
|
|
if (!response || !response.data) {
|
|
|
|
//TODO: popup error here
|
|
|
|
console.log("error during project fetching!");
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
commit(PROJECTS_MUTATIONS.FETCH, response.data.myProjects);
|
|
|
|
|
2018-11-27 13:14:10 +00:00
|
|
|
},
|
|
|
|
createProject: async function({commit}: any, project: Project) {
|
2018-11-28 09:43:43 +00:00
|
|
|
let response = await createProject(project);
|
|
|
|
if(!response) {
|
|
|
|
//TODO: popup error here
|
|
|
|
console.log("error during project creation!");
|
|
|
|
return;
|
2018-11-27 13:14:10 +00:00
|
|
|
}
|
|
|
|
|
2018-11-28 09:43:43 +00:00
|
|
|
commit(PROJECTS_MUTATIONS.CREATE, response);
|
|
|
|
},
|
|
|
|
selectProject: function({commit}: any, projectID: string) {
|
|
|
|
commit(PROJECTS_MUTATIONS.SELECT, projectID);
|
|
|
|
}
|
2018-11-27 13:14:10 +00:00
|
|
|
},
|
|
|
|
getters: {
|
2018-11-28 09:43:43 +00:00
|
|
|
projects: (state: any) => {
|
|
|
|
return state.projects.map((project: any) => {
|
|
|
|
if (project.id === state.selectedProject.id) {
|
|
|
|
project.isSelected = true;
|
|
|
|
}
|
2018-11-27 13:14:10 +00:00
|
|
|
|
2018-11-28 09:43:43 +00:00
|
|
|
return project;
|
|
|
|
});
|
|
|
|
},
|
|
|
|
selectedProject: (state: any) => state.selectedProject,
|
|
|
|
}
|
2018-11-27 13:14:10 +00:00
|
|
|
};
|