diff --git a/webviews/components/ProjectInfo.svelte b/webviews/components/ProjectInfo.svelte index 812f5f1..babe6ed 100644 --- a/webviews/components/ProjectInfo.svelte +++ b/webviews/components/ProjectInfo.svelte @@ -140,19 +140,44 @@ } } + // types of projects + const projectType = { 1: "AUTOMATED_KANBAN_V2", 2: "AUTOMATED_REVIEWS_KANBAN", 3: "BASIC_KANBAN", 4: "BUG_TRIAGE"}; + // types of states + const projectState = { 0: "CLOSED", 1: "OPEN"}; async function handleProjectMutations(project, request, payload) { try { switch (request) { case "addProject": - addProject(payload); + repositories = payload.repositories; + let repoIds = repositories.forEach((repo) => { + repo.id + }); + addProject({ variables: { body: payload.body, name: payload.name, ownerId: project.owner.id, repositoryIds: repoIds, template: projectType[payload.projectType] }}); break; case "closeProject": - closeProject(project); + closeProject({ variables: { projectId: project.id }}); break; case "editProject": - editProject(project, payload); + const body = payload.body; + const name = payload.name; + const visibility = payload.visibility; + const state = projectState[payload.state]; + + if(!body) { + body = project.body; + } + if(!name) { + name = project.name; + } + if(!visibility) { + visibility = project.public; + } + if(!state) { + state = project.state; + } + editProject({ variables: { body: body, name: name, projectId: project.id, public: visibility, state: state }}); break; default: diff --git a/webviews/components/queries.js b/webviews/components/queries.js index 89cf96f..49727aa 100644 --- a/webviews/components/queries.js +++ b/webviews/components/queries.js @@ -71,6 +71,30 @@ export const EDIT_COLUMN = gql` } `; +export const ADD_PROJECT = gql` + mutation ADD_PROJECT($body: String, $name: String!, $ownerId: ID!, $repositoryIds: [ID!], $template: ProjectTemplate) { + createProject(input : { body: $body, name: $name, ownerId: $ownerId, repositoryIds: $repositoryIds, template: $template }) { + clientMutationId + } + } + `; + +export const CLOSE_PROJECT = gql` + mutation CLOSE_PROJECT($projectId: ID!) { + createProject(input : { projectId: $projectId }) { + clientMutationId + } + } + `; + +export const EDIT_PROJECT = gql` + mutation EDIT_PROJECT($body: String, $name: String, $projectId: ID!, $public: Boolean, $state: ProjectState) { + createProject(input : { $body: body, name: $name, projectId: $projectId, public: $public, state: $state }) { + clientMutationId + } + } + `; + export const GET_REPO_PROJECT_INFO = gql` query GetRepoProjectInfo($name: String!, $owner: String!, $number: Int!) { repository(name: $name, owner: $owner) {