2019-01-24 20:15:10 +00:00
|
|
|
// Copyright (C) 2019 Storj Labs, Inc.
|
2018-12-10 17:32:15 +00:00
|
|
|
// See LICENSE for copying information.
|
|
|
|
|
|
|
|
import apollo from '@/utils/apolloManager';
|
2018-12-18 14:43:23 +00:00
|
|
|
import gql from 'graphql-tag';
|
2019-01-10 14:44:15 +00:00
|
|
|
import { ProjectMemberSortByEnum } from '@/utils/constants/ProjectMemberSortEnum';
|
2019-07-18 14:39:39 +01:00
|
|
|
import { TeamMember } from '@/types/teamMembers';
|
|
|
|
import { RequestResponse } from '@/types/response';
|
2018-12-10 17:32:15 +00:00
|
|
|
|
|
|
|
// Performs graqhQL request.
|
2019-08-05 16:43:52 +01:00
|
|
|
export async function addProjectMembersRequest(projectId: string, emails: string[]): Promise<RequestResponse<null>> {
|
2019-02-20 13:33:56 +00:00
|
|
|
let result: RequestResponse<null> = {
|
2018-12-26 15:05:33 +00:00
|
|
|
errorMessage: '',
|
|
|
|
isSuccess: false,
|
|
|
|
data: null
|
2019-02-20 13:33:56 +00:00
|
|
|
};
|
2019-01-03 15:05:22 +00:00
|
|
|
|
2019-04-05 16:08:14 +01:00
|
|
|
let response: any = await apollo.mutate(
|
|
|
|
{
|
|
|
|
mutation: gql(`
|
2019-08-05 16:43:52 +01:00
|
|
|
mutation($projectId: String!, $emails:[String!]!) {
|
|
|
|
addProjectMembers(
|
|
|
|
projectID: $projectId,
|
|
|
|
email: $emails
|
|
|
|
) {id}
|
|
|
|
}`,
|
2019-04-05 16:08:14 +01:00
|
|
|
),
|
2019-08-05 16:43:52 +01:00
|
|
|
variables: {
|
|
|
|
projectId: projectId,
|
|
|
|
emails: emails
|
|
|
|
},
|
2019-04-05 16:08:14 +01:00
|
|
|
fetchPolicy: 'no-cache',
|
|
|
|
errorPolicy: 'all',
|
2018-12-26 15:05:33 +00:00
|
|
|
}
|
2019-04-05 16:08:14 +01:00
|
|
|
);
|
|
|
|
|
|
|
|
if (response.errors) {
|
|
|
|
result.errorMessage = response.errors[0].message;
|
|
|
|
} else {
|
|
|
|
result.isSuccess = true;
|
2019-02-20 13:33:56 +00:00
|
|
|
}
|
2018-12-10 17:32:15 +00:00
|
|
|
|
2019-02-20 13:33:56 +00:00
|
|
|
return result;
|
2018-12-10 17:32:15 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// Performs graqhQL request.
|
2019-08-05 16:43:52 +01:00
|
|
|
export async function deleteProjectMembersRequest(projectId: string, emails: string[]): Promise<RequestResponse<null>> {
|
2019-02-20 13:33:56 +00:00
|
|
|
let result: RequestResponse<null> = {
|
2018-12-26 15:05:33 +00:00
|
|
|
errorMessage: '',
|
|
|
|
isSuccess: false,
|
|
|
|
data: null
|
2019-02-20 13:33:56 +00:00
|
|
|
};
|
2018-12-26 15:05:33 +00:00
|
|
|
|
2019-04-05 16:08:14 +01:00
|
|
|
let response: any = await apollo.mutate(
|
|
|
|
{
|
|
|
|
mutation: gql(`
|
2019-08-05 16:43:52 +01:00
|
|
|
mutation($projectId: String!, $emails:[String!]!) {
|
|
|
|
deleteProjectMembers(
|
|
|
|
projectID: $projectId,
|
|
|
|
email: $emails
|
|
|
|
) {id}
|
|
|
|
}`
|
2019-04-05 16:08:14 +01:00
|
|
|
),
|
2019-08-05 16:43:52 +01:00
|
|
|
variables: {
|
|
|
|
projectId: projectId,
|
|
|
|
emails: emails
|
|
|
|
},
|
2019-04-05 16:08:14 +01:00
|
|
|
fetchPolicy: 'no-cache',
|
|
|
|
errorPolicy: 'all',
|
2018-12-26 15:05:33 +00:00
|
|
|
}
|
2019-04-05 16:08:14 +01:00
|
|
|
);
|
|
|
|
|
|
|
|
if (response.errors) {
|
|
|
|
result.errorMessage = response.errors[0].message;
|
|
|
|
} else {
|
|
|
|
result.isSuccess = true;
|
2019-02-20 13:33:56 +00:00
|
|
|
}
|
2018-12-10 17:32:15 +00:00
|
|
|
|
2019-02-20 13:33:56 +00:00
|
|
|
return result;
|
2018-12-10 17:32:15 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// Performs graqhQL request.
|
2019-08-05 16:43:52 +01:00
|
|
|
export async function fetchProjectMembersRequest(projectId: string, limit: number, offset: number, sortBy: ProjectMemberSortByEnum, searchQuery: string): Promise<RequestResponse<TeamMember[]>> {
|
2019-07-18 14:39:39 +01:00
|
|
|
let result: RequestResponse<TeamMember[]> = {
|
2019-02-20 13:33:56 +00:00
|
|
|
errorMessage: '',
|
|
|
|
isSuccess: false,
|
|
|
|
data: []
|
|
|
|
};
|
|
|
|
|
2019-04-05 16:08:14 +01:00
|
|
|
let response: any = await apollo.query(
|
|
|
|
{
|
|
|
|
query: gql(`
|
2019-08-05 16:43:52 +01:00
|
|
|
query($projectId: String!, $limit: Int!, $offset: Int!, $order: Int!, $search: String!) {
|
|
|
|
project(
|
|
|
|
id: $projectId,
|
|
|
|
) {
|
|
|
|
members(limit: $limit, offset: $offset, order: $order, search: $search) {
|
|
|
|
user {
|
|
|
|
id,
|
|
|
|
fullName,
|
|
|
|
shortName,
|
|
|
|
email
|
|
|
|
},
|
|
|
|
joinedAt
|
|
|
|
}
|
2019-04-05 16:08:14 +01:00
|
|
|
}
|
2019-08-05 16:43:52 +01:00
|
|
|
}`
|
2019-04-05 16:08:14 +01:00
|
|
|
),
|
2019-08-05 16:43:52 +01:00
|
|
|
variables: {
|
|
|
|
projectId: projectId,
|
|
|
|
limit: limit,
|
|
|
|
offset: offset,
|
|
|
|
order: sortBy,
|
|
|
|
search: searchQuery
|
|
|
|
},
|
2019-04-05 16:08:14 +01:00
|
|
|
fetchPolicy: 'no-cache',
|
|
|
|
errorPolicy: 'all',
|
2018-12-26 15:05:33 +00:00
|
|
|
}
|
2019-04-05 16:08:14 +01:00
|
|
|
);
|
|
|
|
|
|
|
|
if (response.errors) {
|
|
|
|
result.errorMessage = response.errors[0].message;
|
|
|
|
} else {
|
|
|
|
result.isSuccess = true;
|
2019-07-18 14:39:39 +01:00
|
|
|
result.data = getProjectMembersList(response.data.project.members);
|
2019-02-20 13:33:56 +00:00
|
|
|
}
|
2018-12-10 17:32:15 +00:00
|
|
|
|
2019-02-20 13:33:56 +00:00
|
|
|
return result;
|
2018-12-10 17:32:15 +00:00
|
|
|
}
|
2019-01-03 15:05:22 +00:00
|
|
|
|
2019-07-18 14:39:39 +01:00
|
|
|
function getProjectMembersList(projectMembers: any[]): TeamMember[] {
|
|
|
|
if (!projectMembers) {
|
|
|
|
return [];
|
|
|
|
}
|
|
|
|
|
|
|
|
return projectMembers.map(key => new TeamMember(key.user.fullName, key.user.shortName, key.user.email, '', key.user.id));
|
|
|
|
}
|