From c050d36d6ed9293c190ecc8e2913a534a3c8b1dd Mon Sep 17 00:00:00 2001 From: Bogdan Cochior <bogdan.cochior@thinslices.com> Date: Thu, 20 Sep 2018 16:56:05 +0300 Subject: [PATCH] fix(handlingEditor): fix invite handling editor --- packages/component-faraday-selectors/src/index.js | 14 ++++++++------ .../src/manuscriptDetails/ManuscriptHeader.js | 8 ++++---- packages/component-manuscript/src/redux/editors.js | 11 ++++++++--- 3 files changed, 20 insertions(+), 13 deletions(-) diff --git a/packages/component-faraday-selectors/src/index.js b/packages/component-faraday-selectors/src/index.js index 48940b4c6..cf7ada724 100644 --- a/packages/component-faraday-selectors/src/index.js +++ b/packages/component-faraday-selectors/src/index.js @@ -174,13 +174,15 @@ export const pendingHEInvitation = (state, collectionId) => i.role === 'handlingEditor' && !i.hasAnswer, ) + .value() -const parseInvitedHE = (handlingEditor = {}, state, collectionId) => ({ - ...handlingEditor, - name: pendingHEInvitation(state, collectionId) - ? 'Invited' - : handlingEditor.name, -}) +const parseInvitedHE = (handlingEditor, state, collectionId) => + handlingEditor && { + ...handlingEditor, + name: pendingHEInvitation(state, collectionId) + ? 'Invited' + : handlingEditor.name, + } const hideCustomIdStatuses = ['draft', 'technicalChecks'] export const newestFirstParseDashboard = (state, items) => chain(items) diff --git a/packages/component-faraday-ui/src/manuscriptDetails/ManuscriptHeader.js b/packages/component-faraday-ui/src/manuscriptDetails/ManuscriptHeader.js index 26afbcc9d..a4d5c432c 100644 --- a/packages/component-faraday-ui/src/manuscriptDetails/ManuscriptHeader.js +++ b/packages/component-faraday-ui/src/manuscriptDetails/ManuscriptHeader.js @@ -99,21 +99,20 @@ export default compose( heInvitation, resendInvitation, revokeInvitation, - pendingInvitation, + pendingInvitation = {}, handlingEditors = [], - currentUser: { canAssignHE, id: currentUserId }, + currentUser: { permissions: { canAssignHE }, id: currentUserId }, collection: { handlingEditor }, }) => () => { if (pendingInvitation.userId === currentUserId) { return <Text ml={1}>Invited</Text> } - if (pendingInvitation) { + if (pendingInvitation.userId) { const person = chain(handlingEditors) .filter(he => he.id === pendingInvitation.userId) .map(he => ({ ...he, name: `${he.firstName} ${he.lastName}` })) .first() .value() - return ( <PersonInvitation isFetching={isFetching} @@ -129,6 +128,7 @@ export default compose( if (heInvitation) { return <Text ml={1}>{handlingEditor.name}</Text> } + if (canAssignHE) { return ( <Button ml={1} onClick={inviteHE} primary size="small"> diff --git a/packages/component-manuscript/src/redux/editors.js b/packages/component-manuscript/src/redux/editors.js index e39a801a4..794f4266b 100644 --- a/packages/component-manuscript/src/redux/editors.js +++ b/packages/component-manuscript/src/redux/editors.js @@ -23,15 +23,20 @@ export const selectHandlingEditors = state => .filter(editor => editor.isActive && editor.isConfirmed) .value() +const canAssignHEStatuses = ['submitted'] export const canAssignHE = (state, collectionId = '') => { const isEIC = currentUserIs(state, 'adminEiC') - const hasHE = chain(state) + const collection = chain(state) .get('collections', []) .find(c => c.id === collectionId) - .get('handlingEditor') .value() + const hasHE = get(collection, 'handlingEditor') - return isEIC && !hasHE + return ( + isEIC && + !hasHE && + canAssignHEStatuses.includes(get(collection, 'status', 'draft')) + ) } const editorsRequest = () => ({ type: EDITORS_REQUEST }) -- GitLab