From dd2ee31b28205ad407ef58e04c97e8782f05b328 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timoth=C3=A9e=20Alby?= Date: Thu, 7 Jul 2022 10:01:47 +0200 Subject: [PATCH] Merge pull request #8704 from overleaf/ta-multiple-invites-fix Fix UX on Duplicate Group Invites GitOrigin-RevId: e51c406d578b130972024065f9b8bdb2503944a9 --- .../app/src/Features/Subscription/TeamInvitesHandler.js | 1 + services/web/frontend/js/main/user-membership.js | 7 ++++++- .../test/unit/src/Subscription/TeamInvitesHandlerTests.js | 2 ++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/services/web/app/src/Features/Subscription/TeamInvitesHandler.js b/services/web/app/src/Features/Subscription/TeamInvitesHandler.js index 828085370c..1c78d0d06b 100644 --- a/services/web/app/src/Features/Subscription/TeamInvitesHandler.js +++ b/services/web/app/src/Features/Subscription/TeamInvitesHandler.js @@ -174,6 +174,7 @@ function createInvite(subscription, email, inviter, callback) { ) if (invite) { + invite = invite.toObject() invite.sentAt = new Date() } else { invite = { diff --git a/services/web/frontend/js/main/user-membership.js b/services/web/frontend/js/main/user-membership.js index ff521f4e13..e3e889515d 100644 --- a/services/web/frontend/js/main/user-membership.js +++ b/services/web/frontend/js/main/user-membership.js @@ -56,7 +56,12 @@ App.controller('UserMembershipController', function ($scope, queuedHttp) { $scope.inputs.addMembers.inflightCount -= 1 const { data } = response if (data.user != null) { - $scope.users.push(data.user) + const alreadyListed = $scope.users.find( + scopeUser => scopeUser.email === data.user.email + ) + if (!alreadyListed) { + $scope.users.push(data.user) + } } return ($scope.inputs.addMembers.content = '') }) diff --git a/services/web/test/unit/src/Subscription/TeamInvitesHandlerTests.js b/services/web/test/unit/src/Subscription/TeamInvitesHandlerTests.js index b9ae93a01c..bc43f23625 100644 --- a/services/web/test/unit/src/Subscription/TeamInvitesHandlerTests.js +++ b/services/web/test/unit/src/Subscription/TeamInvitesHandlerTests.js @@ -23,6 +23,8 @@ describe('TeamInvitesHandler', function () { email: 'jorah@example.com', token: this.token, } + // ensure teamInvite can be converted from Document to Object + this.teamInvite.toObject = () => this.teamInvite this.subscription = { id: '55153a8014829a865bbf700d',