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) => {
)
}
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 = {
createNewTeam,
setupManuscriptTeam,
removeTeamMember,
getTeamMembersByCollection,
getTeamByGroupAndCollection,
updateHETeam,
}
......@@ -19,7 +19,7 @@ module.exports = models => async (req, res) => {
let user = await models.User.find(req.user)
try {
let collection = await models.Collection.find(collectionId)
const collection = await models.Collection.find(collectionId)
const invitation = await collection.invitations.find(
invitation => invitation.id === invitationId,
)
......@@ -70,19 +70,17 @@ module.exports = models => async (req, res) => {
}
} else {
invitation.isAccepted = false
const team = await teamHelper.getTeamByGroupAndCollection(
collectionId,
invitation.role,
models.Team,
)
if (invitation.role === 'handlingEditor') {
delete collection.handlingEditor
}
await collection.save()
await teamHelper.removeTeamMember(team.id, user.id, models.Team)
user.teams = user.teams.filter(userTeamId => team.id !== userTeamId)
if (invitation.role === 'handlingEditor')
await teamHelper.updateHETeam(
collection,
invitation.role,
models.Team,
user,
)
if (reason !== undefined) {
invitation.reason = reason
await collection.save()
}
try {
if (invitation.role === 'handlingEditor') {
......
......@@ -19,4 +19,10 @@ module.exports = {
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) {
}
helpers.setPublicStatuses(coll, matchingCollPerm)
helpers.parseReviewerAuthors(coll, matchingCollPerm)
if (['reviewer'].includes(matchingCollPerm.permission)) {
return helpers.filterRefusedReviewers(coll, user)
}
return coll
})
.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