From a3bb99d7558527ade58efb473d0c8c02c26ede54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alberto=20Fern=C3=A1ndez=20Capel?= Date: Thu, 7 Jun 2018 16:22:38 +0100 Subject: [PATCH] Honour invited_emails for the team being We'll remove them soon, but we want to keep them for a while so recent invites can join their teams. --- .../Subscription/LimitationsManager.coffee | 5 ++++- .../Subscription/SubscriptionGroupHandler.coffee | 3 +++ .../Subscription/SubscriptionUpdater.coffee | 7 +++++++ .../Subscription/TeamInvitesHandler.coffee | 14 +++++++++++--- .../Subscription/TeamInvitesHandlerTests.coffee | 5 +++++ 5 files changed, 30 insertions(+), 4 deletions(-) diff --git a/services/web/app/coffee/Features/Subscription/LimitationsManager.coffee b/services/web/app/coffee/Features/Subscription/LimitationsManager.coffee index 9b5137392f..92011a5f22 100644 --- a/services/web/app/coffee/Features/Subscription/LimitationsManager.coffee +++ b/services/web/app/coffee/Features/Subscription/LimitationsManager.coffee @@ -56,7 +56,10 @@ module.exports = LimitationsManager = callback err, subscriptions.length > 0, subscriptions teamHasReachedMemberLimit: (subscription) -> - currentTotal = (subscription.member_ids or []).length + (subscription.teamInvites or []).length + currentTotal = (subscription.member_ids or []).length + + (subscription.teamInvites or []).length + + (subscription.invited_emails or []).length + return currentTotal >= subscription.membersLimit hasGroupMembersLimitReached: (user_id, callback = (err, limitReached, subscription)->)-> diff --git a/services/web/app/coffee/Features/Subscription/SubscriptionGroupHandler.coffee b/services/web/app/coffee/Features/Subscription/SubscriptionGroupHandler.coffee index af5b586451..37f535f36c 100644 --- a/services/web/app/coffee/Features/Subscription/SubscriptionGroupHandler.coffee +++ b/services/web/app/coffee/Features/Subscription/SubscriptionGroupHandler.coffee @@ -47,6 +47,9 @@ module.exports = SubscriptionGroupHandler = users = [] + for email in subscription.invited_emails or [] + users.push buildEmailInviteViewModel(email) + for teamInvite in subscription.teamInvites or [] users.push buildEmailInviteViewModel(teamInvite.email) diff --git a/services/web/app/coffee/Features/Subscription/SubscriptionUpdater.coffee b/services/web/app/coffee/Features/Subscription/SubscriptionUpdater.coffee index 16dc5adf25..58fea8c23d 100644 --- a/services/web/app/coffee/Features/Subscription/SubscriptionUpdater.coffee +++ b/services/web/app/coffee/Features/Subscription/SubscriptionUpdater.coffee @@ -47,6 +47,13 @@ module.exports = SubscriptionUpdater = return callback(err) FeaturesUpdater.refreshFeatures user_id, callback + removeEmailInviteFromGroup: (adminUser_id, email, callback)-> + Subscription.update { + admin_id: adminUser_id + }, "$pull": { + invited_emails: email + }, callback + deleteSubscription: (subscription_id, callback = (error) ->) -> SubscriptionLocator.getSubscription subscription_id, (err, subscription) -> return callback(err) if err? diff --git a/services/web/app/coffee/Features/Subscription/TeamInvitesHandler.coffee b/services/web/app/coffee/Features/Subscription/TeamInvitesHandler.coffee index 69aff6cf81..885e729394 100644 --- a/services/web/app/coffee/Features/Subscription/TeamInvitesHandler.coffee +++ b/services/web/app/coffee/Features/Subscription/TeamInvitesHandler.coffee @@ -110,10 +110,18 @@ createInvite = (subscription, email, inviterName, callback) -> return callback(error, invite) removeInviteFromTeam = (subscriptionId, email, callback) -> - searchConditions = { _id: new ObjectId(subscriptionId.toString()) } - updateOp = { $pull: { teamInvites: { email: email.trim().toLowerCase() } } } + email = email.trim().toLowerCase() + + searchConditions = { _id: new ObjectId(subscriptionId.toString()) } + + removeInvite = { $pull: { teamInvites: { email: email } } } + removeLegacyInvite = { $pull: { invited_emails: email } } + + async.series [ + (cb) -> Subscription.update(searchConditions, removeInvite, cb), + (cb) -> Subscription.update(searchConditions, removeLegacyInvite, cb), + ], callback - Subscription.update(searchConditions, updateOp, callback) checkIfInviteIsPossible = (subscription, email, callback = (error, possible, reason) -> ) -> if LimitationsManager.teamHasReachedMemberLimit(subscription) diff --git a/services/web/test/unit/coffee/Subscription/TeamInvitesHandlerTests.coffee b/services/web/test/unit/coffee/Subscription/TeamInvitesHandlerTests.coffee index 8a977a8706..81a1d2718f 100644 --- a/services/web/test/unit/coffee/Subscription/TeamInvitesHandlerTests.coffee +++ b/services/web/test/unit/coffee/Subscription/TeamInvitesHandlerTests.coffee @@ -201,6 +201,11 @@ describe "TeamInvitesHandler", -> { _id: new ObjectId("55153a8014829a865bbf700d") }, { '$pull': { teamInvites: { email: "jorah@mormont.org" } } } ).should.eq true + + @Subscription.update.calledWith( + { _id: new ObjectId("55153a8014829a865bbf700d") }, + { '$pull': { invited_emails: "jorah@mormont.org" } } + ).should.eq true done() describe "createTeamInvitesForLegacyInvitedEmail", (done) ->