Skip to content
Snippets Groups Projects
Commit 61210806 authored by Sebastian's avatar Sebastian
Browse files

feat(component-invite): remove refused reviewers

parent fb89e768
No related branches found
No related tags found
1 merge request!6Agree/Decline to work on a manuscript
...@@ -106,10 +106,20 @@ const getTeamByGroupAndCollection = async (collectionId, role, TeamModel) => { ...@@ -106,10 +106,20 @@ const getTeamByGroupAndCollection = async (collectionId, role, TeamModel) => {
) )
} }
const updateHETeam = async (collection, role, TeamModel, user) => {
const team = await getTeamByGroupAndCollection(collection.id, role, TeamModel)
delete collection.handlingEditor
await removeTeamMember(team.id, user.id, TeamModel)
user.teams = user.teams.filter(userTeamId => team.id !== userTeamId)
await user.save()
await collection.save()
}
module.exports = { module.exports = {
createNewTeam, createNewTeam,
setupManuscriptTeam, setupManuscriptTeam,
removeTeamMember, removeTeamMember,
getTeamMembersByCollection, getTeamMembersByCollection,
getTeamByGroupAndCollection, getTeamByGroupAndCollection,
updateHETeam,
} }
...@@ -19,7 +19,7 @@ module.exports = models => async (req, res) => { ...@@ -19,7 +19,7 @@ module.exports = models => async (req, res) => {
let user = await models.User.find(req.user) let user = await models.User.find(req.user)
try { try {
let collection = await models.Collection.find(collectionId) const collection = await models.Collection.find(collectionId)
const invitation = await collection.invitations.find( const invitation = await collection.invitations.find(
invitation => invitation.id === invitationId, invitation => invitation.id === invitationId,
) )
...@@ -70,19 +70,17 @@ module.exports = models => async (req, res) => { ...@@ -70,19 +70,17 @@ module.exports = models => async (req, res) => {
} }
} else { } else {
invitation.isAccepted = false invitation.isAccepted = false
const team = await teamHelper.getTeamByGroupAndCollection(
collectionId, if (invitation.role === 'handlingEditor')
invitation.role, await teamHelper.updateHETeam(
models.Team, collection,
) invitation.role,
if (invitation.role === 'handlingEditor') { models.Team,
delete collection.handlingEditor user,
} )
await collection.save()
await teamHelper.removeTeamMember(team.id, user.id, models.Team)
user.teams = user.teams.filter(userTeamId => team.id !== userTeamId)
if (reason !== undefined) { if (reason !== undefined) {
invitation.reason = reason invitation.reason = reason
await collection.save()
} }
try { try {
if (invitation.role === 'handlingEditor') { if (invitation.role === 'handlingEditor') {
......
...@@ -19,4 +19,10 @@ module.exports = { ...@@ -19,4 +19,10 @@ module.exports = {
coll.visibleStatus = statuses[coll.status].private coll.visibleStatus = statuses[coll.status].private
} }
}, },
filterRefusedReviewers: (coll, user) => {
const matchingInv = coll.invitations.find(inv => inv.userId === user.id)
if (matchingInv === undefined) return null
if (matchingInv.hasAnswer === true && !matchingInv.isAccepted) return null
return coll
},
} }
...@@ -35,6 +35,9 @@ async function teamPermissions(user, operation, object, context) { ...@@ -35,6 +35,9 @@ async function teamPermissions(user, operation, object, context) {
} }
helpers.setPublicStatuses(coll, matchingCollPerm) helpers.setPublicStatuses(coll, matchingCollPerm)
helpers.parseReviewerAuthors(coll, matchingCollPerm) helpers.parseReviewerAuthors(coll, matchingCollPerm)
if (['reviewer'].includes(matchingCollPerm.permission)) {
return helpers.filterRefusedReviewers(coll, user)
}
return coll return coll
}) })
.filter(Boolean) .filter(Boolean)
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment