Skip to content
Snippets Groups Projects

HIN-854: Invite + resend/revoke reviewer invitations

Merged Alexandru Munteanu requested to merge HIN-854 into develop
Files
22
@@ -40,16 +40,18 @@ export const currentUserIs = ({ currentUser: { user } }, role) => {
@@ -40,16 +40,18 @@ export const currentUserIs = ({ currentUser: { user } }, role) => {
}
}
}
}
export const canInviteReviewers = ({ currentUser: { user } }, project) => {
const cannotInviteReviewersStatuses = ['draft', 'rejected', 'published']
const status = get(project, 'status')
export const canInviteReviewers = (state, collection) => {
if (!status || status === 'rejected' || status === 'published') return false
if (
 
cannotInviteReviewersStatuses.includes(get(collection, 'status', 'draft'))
 
)
 
return false
const handlingEditor = get(project, 'handlingEditor')
const user = selectCurrentUser(state)
const isAdmin = get(user, 'admin')
const isStaff = currentUserIs(state, 'adminEiC')
const isEic = get(user, 'editorInChief')
const { isAccepted, id: heId } = get(collection, 'handlingEditor', {})
const isAccepted = get(handlingEditor, 'isAccepted')
const heId = get(handlingEditor, 'id')
return isAccepted && (user.id === heId || isStaff)
return isAccepted && (user.id === heId || isAdmin || isEic)
}
}
export const getUserToken = ({ currentUser }) =>
export const getUserToken = ({ currentUser }) =>
@@ -203,3 +205,15 @@ export const newestFirstParseDashboard = (state = {}) =>
@@ -203,3 +205,15 @@ export const newestFirstParseDashboard = (state = {}) =>
.orderBy(['created'], ['desc'])
.orderBy(['created'], ['desc'])
.map(item => parseCollectionDetails(state, item))
.map(item => parseCollectionDetails(state, item))
.value()
.value()
 
 
export const getInvitationsWithReviewersForFragment = (state, fragmentId) =>
 
chain(state)
 
.get(`fragments.${fragmentId}.invitations`, [])
 
.filter(invitation => invitation.role === 'reviewer')
 
.map(invitation => ({
 
...invitation,
 
person: get(state, 'users.users', []).find(
 
reviewer => reviewer.id === invitation.userId,
 
),
 
}))
 
.value()