diff --git a/packages/component-invite/src/routes/fragmentsInvitations/decline.js b/packages/component-invite/src/routes/fragmentsInvitations/decline.js index 6d661344665ccd70f199eb3b7b024dd46010c033..8d7e5d97541e08dc4a9ae912867ce58a8e61df4e 100644 --- a/packages/component-invite/src/routes/fragmentsInvitations/decline.js +++ b/packages/component-invite/src/routes/fragmentsInvitations/decline.js @@ -1,4 +1,5 @@ const { + Team, services, Invitation, authsome: authsomeHelper, @@ -73,6 +74,25 @@ module.exports = models => async (req, res) => { const baseUrl = services.getBaseUrl(req) + const teamHelper = new Team({ + fragmentId, + collectionId, + TeamModel: models.Team, + }) + + const reviewerTeam = await teamHelper.getTeam({ + role: 'reviewer', + objectType: 'fragment', + }) + + await teamHelper.removeTeamMember({ + teamId: reviewerTeam.id, + userId: user.id, + }) + + user.teams = user.teams.filter(userTeamId => reviewerTeam.id !== userTeamId) + await user.save() + notifications.sendNotifications({ baseUrl, fragment, diff --git a/packages/component-invite/src/routes/fragmentsInvitations/patch.js b/packages/component-invite/src/routes/fragmentsInvitations/patch.js index b6bda8da6ee35e84b28b992cee9c86b6102ce3d2..20d059bcb68b96842426a1f6a71c246c98238c5c 100644 --- a/packages/component-invite/src/routes/fragmentsInvitations/patch.js +++ b/packages/component-invite/src/routes/fragmentsInvitations/patch.js @@ -1,4 +1,5 @@ const { + Team, services, Collection, Invitation, @@ -61,10 +62,32 @@ module.exports = models => async (req, res) => { fragment.save() } else { if (reason) invitation.reason = reason + await fragment.save() collectionHelper.updateStatusByNumberOfReviewers({ invitations: fragment.invitations, }) + + const teamHelper = new Team({ + fragmentId, + collectionId, + TeamModel: models.Team, + }) + + const reviewerTeam = await teamHelper.getTeam({ + role: 'reviewer', + objectType: 'fragment', + }) + + await teamHelper.removeTeamMember({ + teamId: reviewerTeam.id, + userId: user.id, + }) + + user.teams = user.teams.filter( + userTeamId => reviewerTeam.id !== userTeamId, + ) + await user.save() } notifications.sendNotifications({ diff --git a/packages/component-invite/src/tests/fragmentsInvitations/patch.test.js b/packages/component-invite/src/tests/fragmentsInvitations/patch.test.js index 8ce62849aeaf74fe31749028fa9cccf1834e6fff..15d6f7a45edb01cde39e137b57121fd8520a5168 100644 --- a/packages/component-invite/src/tests/fragmentsInvitations/patch.test.js +++ b/packages/component-invite/src/tests/fragmentsInvitations/patch.test.js @@ -62,6 +62,7 @@ describe('Patch fragments invitations route handler', () => { await require(patchPath)(models)(req, res) expect(res.statusCode).toBe(200) + expect(reviewer.teams).toHaveLength(0) }) it('should return an error if the collection does not exist', async () => { const { handlingEditor } = testFixtures.users