From 3acbbbb89997179c9548a6be35ce804394647f64 Mon Sep 17 00:00:00 2001 From: Bogdan Cochior <bogdan.cochior@thinslices.com> Date: Wed, 3 Oct 2018 16:16:32 +0300 Subject: [PATCH] fix(reviewerDetails): fix eic not seeing the reports --- .../component-faraday-selectors/src/index.js | 28 +++-- .../src/contextualBoxes/ReviewerDetails.js | 100 ++++++++++-------- .../src/components/ManuscriptLayout.js | 4 +- .../src/components/ManuscriptPage.js | 2 + 4 files changed, 79 insertions(+), 55 deletions(-) diff --git a/packages/component-faraday-selectors/src/index.js b/packages/component-faraday-selectors/src/index.js index 24418c030..25da3448f 100644 --- a/packages/component-faraday-selectors/src/index.js +++ b/packages/component-faraday-selectors/src/index.js @@ -28,18 +28,34 @@ export const currentUserIs = ({ currentUser: { user } }, role) => { } } -const cannotInviteReviewersStatuses = ['draft', 'rejected', 'published'] +const canInviteReviewersStatuses = [ + 'heAssigned', + 'reviewersInvited', + 'underReview', + 'reviewCompleted', +] export const canInviteReviewers = (state, collection) => { - if ( - cannotInviteReviewersStatuses.includes(get(collection, 'status', 'draft')) - ) + if (!canInviteReviewersStatuses.includes(get(collection, 'status', 'draft'))) return false const user = selectCurrentUser(state) - const isStaff = currentUserIs(state, 'isAdmin') + const isAdmin = currentUserIs(state, 'isAdmin') const { isAccepted, id: heId } = get(collection, 'handlingEditor', {}) - return isAccepted && (user.id === heId || isStaff) + return isAccepted && (user.id === heId || isAdmin) +} + +const cannotViewReviewersDetails = [ + 'draft', + 'technicalChecks', + 'submitted', + 'heInvited', +] +export const canViewReviewersDetails = (state, collection = {}) => { + if (cannotViewReviewersDetails.includes(get(collection, 'status', 'draft'))) { + return false + } + return canViewReports(state, collection.id) } export const getUserToken = ({ currentUser }) => diff --git a/packages/component-faraday-ui/src/contextualBoxes/ReviewerDetails.js b/packages/component-faraday-ui/src/contextualBoxes/ReviewerDetails.js index 153dbfa01..7362a5e07 100644 --- a/packages/component-faraday-ui/src/contextualBoxes/ReviewerDetails.js +++ b/packages/component-faraday-ui/src/contextualBoxes/ReviewerDetails.js @@ -25,31 +25,34 @@ const ReviewerDetails = ({ fragment, invitations, previewFile, - currentUser, downloadFile, - canSeeReports, + canInviteReviewers, onInviteReviewer, onResendReviewerInvite, onRevokeReviewerInvite, -}) => ( - <ContextualBox - label="Reviewer details" - rightChildren={<ReviewerBreakdown fitContent fragment={fragment} mr={1} />} - startExpanded - > - <Tabs> - {({ selectedTab, changeTab }) => ( - <Fragment> - <TabsHeader> - <TabButton - ml={1} - mr={1} - onClick={() => changeTab(0)} - selected={selectedTab === 0} - > - <H4>Reviewer Details</H4> - </TabButton> - {canSeeReports && ( + canViewReviewersDetails, +}) => + canViewReviewersDetails ? ( + <ContextualBox + label="Reviewer Details & Reports" + rightChildren={ + <ReviewerBreakdown fitContent fragment={fragment} mr={1} /> + } + startExpanded + > + <Tabs> + {({ selectedTab, changeTab }) => ( + <Fragment> + <TabsHeader> + <TabButton + ml={1} + mr={1} + onClick={() => changeTab(0)} + selected={selectedTab === 0} + > + <H4>Reviewer Details</H4> + </TabButton> + <TabButton ml={1} mr={1} @@ -59,24 +62,24 @@ const ReviewerDetails = ({ <H4>Reviewer Reports</H4> <Tag mr={1}>{reports.length}</Tag> </TabButton> - )} - </TabsHeader> - <TabContent> - {selectedTab === 0 && ( - <Fragment> - <InviteReviewers - modalKey="invite-reviewers" - onInvite={onInviteReviewer} - /> - <ReviewersTable - invitations={invitations} - onResendReviewerInvite={onResendReviewerInvite} - onRevokeReviewerInvite={onRevokeReviewerInvite} - /> - </Fragment> - )} - {canSeeReports && - selectedTab === 1 && ( + </TabsHeader> + <TabContent> + {selectedTab === 0 && ( + <Fragment> + {canInviteReviewers && ( + <InviteReviewers + modalKey="invite-reviewers" + onInvite={onInviteReviewer} + /> + )} + <ReviewersTable + invitations={invitations} + onResendReviewerInvite={onResendReviewerInvite} + onRevokeReviewerInvite={onRevokeReviewerInvite} + /> + </Fragment> + )} + {selectedTab === 1 && ( <Fragment> {reports.length === 0 && ( <Text align="center">No reports submitted yet.</Text> @@ -94,12 +97,12 @@ const ReviewerDetails = ({ ))} </Fragment> )} - </TabContent> - </Fragment> - )} - </Tabs> - </ContextualBox> -) + </TabContent> + </Fragment> + )} + </Tabs> + </ContextualBox> + ) : null export default compose( withFilePreview, @@ -113,8 +116,11 @@ export default compose( reports: reviewerReports.filter(r => r.submittedOn), })), withProps(({ currentUser }) => ({ - canSeeReports: - get(currentUser, 'isEIC', false) || get(currentUser, 'isHE', false), + canInviteReviewers: get(currentUser, 'permissions.canInviteReviewers'), + canViewReviewersDetails: get( + currentUser, + 'permissions.canViewReviewersDetails', + ), })), )(ReviewerDetails) diff --git a/packages/component-manuscript/src/components/ManuscriptLayout.js b/packages/component-manuscript/src/components/ManuscriptLayout.js index 969409625..75d345cf6 100644 --- a/packages/component-manuscript/src/components/ManuscriptLayout.js +++ b/packages/component-manuscript/src/components/ManuscriptLayout.js @@ -94,7 +94,7 @@ const ManuscriptLayout = ({ getSignedUrl={getSignedUrl} /> - {get(currentUser, 'permisions.canViewReports', true) && + {get(currentUser, 'permissions.canViewReports', true) && !!editorialRecommendations.length && ( <EditorialCommentCard journal={journal} @@ -170,7 +170,7 @@ const ManuscriptLayout = ({ /> )} - {get(currentUser, 'permissions.canInviteReviewers', false) && ( + {get(currentUser, 'permissions.canViewReviewersDetails', false) && ( <ReviewerDetails currentUser={currentUser} fragment={fragment} diff --git a/packages/component-manuscript/src/components/ManuscriptPage.js b/packages/component-manuscript/src/components/ManuscriptPage.js index a28b8024f..31faec409 100644 --- a/packages/component-manuscript/src/components/ManuscriptPage.js +++ b/packages/component-manuscript/src/components/ManuscriptPage.js @@ -46,6 +46,7 @@ import { pendingHEInvitation, currentUserIsReviewer, parseCollectionDetails, + canViewReviewersDetails, pendingReviewerInvitation, canOverrideTechnicalChecks, getOwnPendingRecommendation, @@ -150,6 +151,7 @@ export default compose( canMakeRevision: canMakeRevision(state, collection, fragment), canMakeDecision: canMakeDecision(state, collection, fragment), canEditManuscript: canEditManuscript(state, collection, fragment), + canViewReviewersDetails: canViewReviewersDetails(state, collection), canOverrideTechChecks: canOverrideTechnicalChecks(state, collection), }, }, -- GitLab