diff --git a/api/src/graphql/resolvers/Mutation/index.js b/api/src/graphql/resolvers/Mutation/index.js index 5190165bf..a596e0100 100644 --- a/api/src/graphql/resolvers/Mutation/index.js +++ b/api/src/graphql/resolvers/Mutation/index.js @@ -1,3 +1,5 @@ +import axios from 'axios' + import { getUser } from '../../../middleware/getMember' import { sendTeamMemberInvite, sendTeamCreateConfirmation, verifyInviteToken } from '../../../email/sendgrid' @@ -135,13 +137,57 @@ export const resolvers = { return err }) }, - async deleteTeam(parent, { slug }, ctx, info) { - return ctx.db.mutation.deleteTeam({ where: { slug } }, info) - .catch((res) => { - logger.info('deleteTeam error: ', res) - const errors = res.graphQLErrors.map((error) => { - return error.message - }) + async deleteTeam(parent, { slug, botSlug }, ctx, info) { + logger.info('DeleteTeam resolver') + const authId = ctx.request.headers.userid + if (!authId) { + throw new AuthenticationError() + } + logger.info(authId) + logger.info('getUser') + logger.info(getUser) + + return getUser(authId) + .then(async result => { + logger.info('deleteTeam axios:') + logger.info(await result) + + const alias = await result.data.users_User.alias + // const email = result.data.users_User.email + const deleteTeamUrl = encodeURI(`${slug}/${alias}/${botSlug}`) + logger.info('deleteTeamUrl:') + logger.info(JSON.stringify(await deleteTeamUrl)) + + const platformUrl = 'https://develop.advancedalgos.net/AABrowserAPI/deleteTeam/' + // const platformUrl = 'http://localhost:1337/AABrowserAPI/teamSetup/' + + logger.info(`${platformUrl}${deleteTeamUrl}/${authId}`) + const deletePlatformTeam = await axios.get(`${platformUrl}${deleteTeamUrl}/${authId}`) + .then((result) => { + console.log('deletePlatformTeam result:', result.data) + if(result.data.result === 'Fail'){ + return result.data.message + } + return result + }) + .catch(err =>{ + logger.debug('deletePlatformTeam err:') + logger.debug(err) + throw new Error(err) + }) + console.log('deletePlatformTeam returned: ', await deletePlatformTeam) + + return ctx.db.mutation.deleteTeam({ where: { slug } }, info) + .catch((res) => { + logger.info('deleteTeam error: ', res) + const errors = res.graphQLErrors.map((error) => { + return error.message + }) + }) + }) + .catch((err) => { + logger.debug('deleteTeam error: ') + return err }) } } diff --git a/api/src/graphql/schema.graphql b/api/src/graphql/schema.graphql index 00413a539..2095882bb 100644 --- a/api/src/graphql/schema.graphql +++ b/api/src/graphql/schema.graphql @@ -24,7 +24,7 @@ type Mutation { createTeam(name: String!, slug: String!, botName: String!, botSlug: String!): Team @isAuthenticated updateTeamProfile(slug: String!, description: String, motto: String, avatar: String, banner: String): Team @isAuthenticated updateFB(fbId: String!, avatar: String): FinancialBeings @isAuthenticated - deleteTeam(slug: String!): Team @isAuthenticated @isOwner(type: "Team") + deleteTeam(slug: String!, botSlug: String!): Team @isAuthenticated @isOwner(type: "Team") sendMemberInviteSG(email: String!, teamId: String!): String confirmMember(token: String!): String removeTeamMember(teamId: String!, memberId: String!): String diff --git a/api/src/middleware/getMember.js b/api/src/middleware/getMember.js index 871a7e2eb..1a4498d45 100644 --- a/api/src/middleware/getMember.js +++ b/api/src/middleware/getMember.js @@ -1,4 +1,6 @@ -import { logger } from '../logger' +import axios from 'axios' + +import { logger, DatabaseError } from '../logger' export const getMember = async (req, res, next, db) => { if (!req.headers.userId) return next() @@ -15,13 +17,13 @@ export const getMember = async (req, res, next, db) => { } export const getUser = authId => { - logger.info('getUser') + logger.info('getUser MiddleWare') logger.info(authId) const API_URL = 'https://app-api.advancedalgos.net/graphql' - return new Promise(resolve => { + return new Promise((resolve, reject) => { try { - const result = axios.post(API_URL, { - query: `query users_User($userId: String!) { + return axios.post(API_URL, { + query: `query users_User($userId: ID!) { users_User(id: $userId){ id alias @@ -36,19 +38,18 @@ export const getUser = authId => { 'Content-Type': 'application/json' } }) - .then(result => { + .then(res => { logger.info('getUser result') - logger.info(result.data) - resolve(result.data) + logger.info(res.data) + resolve(res.data) }) .catch(err => { logger.info('getUser err') logger.info(err) - throw new Error(err) + reject(new DatabaseError(err)) }) - } catch (error) { - resolve(error) + reject(new DatabaseError(error)) } }) } diff --git a/client/src/graphql/teams/DeleteTeamMutation.js b/client/src/graphql/teams/DeleteTeamMutation.js index 0db2a7ad4..ce02bc213 100644 --- a/client/src/graphql/teams/DeleteTeamMutation.js +++ b/client/src/graphql/teams/DeleteTeamMutation.js @@ -2,8 +2,8 @@ import gql from 'graphql-tag' export const DELETE_TEAM = gql` - mutation deleteTeam($slug: String!) { - teams_DeleteTeam(slug: $slug) { + mutation deleteTeam($slug: String!, $botSlug: String!) { + teams_DeleteTeam(slug: $slug, botSlug: $botSlug) { id } } diff --git a/client/src/utils/graphql-errors.js b/client/src/utils/graphql-errors.js index 6eed0e939..8ada52b66 100644 --- a/client/src/utils/graphql-errors.js +++ b/client/src/utils/graphql-errors.js @@ -1,3 +1,5 @@ +import log from './log' + const ErrorResponse = { 'unique constraint': 'Sorry, already taken! Please create a unique ' } diff --git a/client/src/views/manage-teams/components/ManageTeamDelete.js b/client/src/views/manage-teams/components/ManageTeamDelete.js index 3faae8109..7f56e9913 100644 --- a/client/src/views/manage-teams/components/ManageTeamDelete.js +++ b/client/src/views/manage-teams/components/ManageTeamDelete.js @@ -123,7 +123,8 @@ export class ManageTeamDelete extends Component { this.handleSubmit( e, deleteTeam, - this.props.slug + this.props.slug, + this.props.botSlug ) }} color='primary' @@ -140,16 +141,17 @@ export class ManageTeamDelete extends Component { ) } - async handleSubmit (e, deleteTeam, slug) { + async handleSubmit (e, deleteTeam, slug, botSlug) { e.preventDefault() - await deleteTeam({ variables: { slug } }) + await deleteTeam({ variables: { slug, botSlug } }) this.setState({ open: false }) } } ManageTeamDelete.propTypes = { classes: PropTypes.object.isRequired, - slug: PropTypes.string.isRequired + slug: PropTypes.string.isRequired, + botSlug: PropTypes.string.isRequired } export default withStyles(styles)(ManageTeamDelete) diff --git a/client/src/views/manage-teams/components/ManageTeamsItem.js b/client/src/views/manage-teams/components/ManageTeamsItem.js index c914bf2a8..4af1b51d5 100644 --- a/client/src/views/manage-teams/components/ManageTeamsItem.js +++ b/client/src/views/manage-teams/components/ManageTeamsItem.js @@ -42,7 +42,7 @@ export const ManageTeamsItem = ({ classes, team, ...props }) => { - +