diff --git a/website/server/controllers/api-v3/groups.js b/website/server/controllers/api-v3/groups.js index 0870890953..f386cba456 100644 --- a/website/server/controllers/api-v3/groups.js +++ b/website/server/controllers/api-v3/groups.js @@ -590,11 +590,6 @@ api.joinGroup = { // @TODO: Review the need for this and if still needed, don't base this on memberCount if (!group.hasNotCancelled() && group.memberCount === 0) group.leader = user._id; // If new user is only member -> set as leader - if (group.hasNotCancelled()) { - await payments.addSubToGroupUser(user, group); - await group.updateGroupPlan(); - } - group.memberCount += 1; let promises = [group.save(), user.save()]; @@ -638,6 +633,11 @@ api.joinGroup = { promises = await Promise.all(promises); + if (group.hasNotCancelled()) { + await payments.addSubToGroupUser(user, group); + await group.updateGroupPlan(); + } + let response = await Group.toJSONCleanChat(promises[0], user); let leader = await User.findById(response.leader).select(nameFields).exec(); if (leader) { @@ -790,7 +790,6 @@ api.leaveGroup = { } await group.leave(user, req.query.keep, req.body.keepChallenges); - if (group.hasNotCancelled()) await group.updateGroupPlan(true); _removeMessagesFromMember(user, group._id); await user.save(); @@ -804,6 +803,7 @@ api.leaveGroup = { await payments.cancelGroupSubscriptionForUser(user, group); } + if (group.hasNotCancelled()) await group.updateGroupPlan(true); res.respond(200, {}); }, }; @@ -892,10 +892,6 @@ api.removeGroupMember = { if (isInGroup) { group.memberCount -= 1; - if (group.hasNotCancelled()) { - await group.updateGroupPlan(true); - await payments.cancelGroupSubscriptionForUser(member, group, true); - } if (group.quest && group.quest.leader === member._id) { group.quest.key = undefined; @@ -944,6 +940,12 @@ api.removeGroupMember = { member.save(), group.save(), ]); + + if (isInGroup && group.hasNotCancelled()) { + await group.updateGroupPlan(true); + await payments.cancelGroupSubscriptionForUser(member, group, true); + } + res.respond(200, {}); }, };