diff --git a/packages/component-faraday-selectors/src/index.js b/packages/component-faraday-selectors/src/index.js index 80fb4af49eec341f69ea3f30ab8cb69c32408f53..36eca8431d731ffc7b17da4936bfb5602b49be9a 100644 --- a/packages/component-faraday-selectors/src/index.js +++ b/packages/component-faraday-selectors/src/index.js @@ -61,6 +61,22 @@ export const canViewReviewersDetails = (state, collection = {}) => { return canViewReports(state, collection.id) } +const authorCannotViewReportsDetails = ['submitted', 'rejected'] + +export const authorCanViewReportsDetails = (state, collection = {}) => { + if ( + authorCannotViewReportsDetails.includes(get(collection, 'status', 'draft')) + ) { + return false + } + return authorCanViewReports(state, collection.id) +} + +export const authorCanViewReports = (state, collectionId) => { + const isAuthor = currentUserIs(state, 'author') + return isAuthor +} + const canHeViewEditorialCommentsStatuses = [ 'revisionRequested', 'rejected', @@ -73,8 +89,6 @@ export const canHeViewEditorialComments = (state, collection = {}) => { return isHE && canHeViewEditorialCommentsStatuses.includes(status) } -//authorcanviewreviewerreports(state,fragmentid) - const canEICViewEditorialCommentsStatuses = ['rejected', 'accepted', 'inQA'] export const canEICViewEditorialComments = (state, collection = {}) => { const isEIC = currentUserIs(state, 'adminEiC') diff --git a/packages/component-faraday-ui/src/contextualBoxes/ReviewerDetails.js b/packages/component-faraday-ui/src/contextualBoxes/ReviewerDetails.js index 8e242820b8a3077267b79efe84b7355b6d7029d0..2f3cd527d4d16fe6a00362f65831f5bc591cc9bb 100644 --- a/packages/component-faraday-ui/src/contextualBoxes/ReviewerDetails.js +++ b/packages/component-faraday-ui/src/contextualBoxes/ReviewerDetails.js @@ -39,99 +39,97 @@ const ReviewerDetails = ({ expanded, highlight, canViewReviewersDetails, + authorCanViewReportsDetails, ...rest -}) => - canViewReviewersDetails ? ( - <ContextualBox - expanded={expanded} - highlight={highlight} - label="Reviewer Details & Reports" - rightChildren={ - <ReviewerBreakdown fitContent fragment={fragment} mr={1} /> - } - toggle={toggle} - {...rest} - > - <Tabs selectedTab={reports.length ? 1 : 0}> - {({ selectedTab, changeTab }) => ( - <Fragment> - <TabsHeader> +}) => ( + <ContextualBox + expanded={expanded} + highlight={highlight} + label="Reviewer Details & Reports" + rightChildren={<ReviewerBreakdown fitContent fragment={fragment} mr={1} />} + toggle={toggle} + {...rest} + > + <Tabs selectedTab={reports.length ? 1 : 0}> + {({ selectedTab, changeTab }) => ( + <Fragment> + <TabsHeader> + <TabButton + ml={1} + mr={1} + onClick={() => changeTab(0)} + selected={selectedTab === 0} + > + <H4>Reviewer Details</H4> + </TabButton> + {canInviteReviewers && ( <TabButton ml={1} mr={1} - onClick={() => changeTab(0)} - selected={selectedTab === 0} + onClick={() => changeTab(2)} + selected={selectedTab === 2} > - <H4>Reviewer Details</H4> + <H4>Reviewer Suggestions</H4> </TabButton> - {canInviteReviewers && ( - <TabButton - ml={1} - mr={1} - onClick={() => changeTab(2)} - selected={selectedTab === 2} - > - <H4>Reviewer Suggestions</H4> - </TabButton> - )} - <TabButton - ml={1} - mr={1} - onClick={() => changeTab(1)} - selected={selectedTab === 1} - > - <H4>Reviewer Reports</H4> - <Tag mr={1}>{reports.length}</Tag> - </TabButton> - </TabsHeader> - <TabContent> - {selectedTab === 0 && ( - <Fragment> - {canInviteReviewers && ( - <InviteReviewers - modalKey="invite-reviewers" - onInvite={onInviteReviewer} - /> - )} - <ReviewersTable - invitations={invitations} - onResendReviewerInvite={onResendReviewerInvite} - onRevokeReviewerInvite={onRevokeReviewerInvite} + )} + <TabButton + ml={1} + mr={1} + onClick={() => changeTab(1)} + selected={selectedTab === 1} + > + <H4>Reviewer Reports</H4> + <Tag mr={1}>{reports.length}</Tag> + </TabButton> + </TabsHeader> + <TabContent> + {selectedTab === 0 && ( + <Fragment> + {canInviteReviewers && ( + <InviteReviewers + modalKey="invite-reviewers" + onInvite={onInviteReviewer} /> - </Fragment> - )} - {selectedTab === 2 && ( - <PublonsTable - onInvite={onInvitePublonReviewer} - publonsError={fetchingError} - publonsFetching={isFetching} - reviewers={publonReviewers} + )} + <ReviewersTable + invitations={invitations} + onResendReviewerInvite={onResendReviewerInvite} + onRevokeReviewerInvite={onRevokeReviewerInvite} /> - )} - {selectedTab === 1 && ( - <Fragment> - {reports.length === 0 && ( - <Text align="center">No reports submitted yet.</Text> - )} - {reports.map((report, index) => ( - <ReviewerReport - journal={journal} - key={report.id} - onDownload={downloadFile} - onPreview={previewFile} - report={report} - reviewerIndex={index + 1} - showOwner - /> - ))} - </Fragment> - )} - </TabContent> - </Fragment> - )} - </Tabs> - </ContextualBox> - ) : null + </Fragment> + )} + {selectedTab === 2 && ( + <PublonsTable + onInvite={onInvitePublonReviewer} + publonsError={fetchingError} + publonsFetching={isFetching} + reviewers={publonReviewers} + /> + )} + {selectedTab === 1 && ( + <Fragment> + {reports.length === 0 && ( + <Text align="center">No reports submitted yet.</Text> + )} + {reports.map((report, index) => ( + <ReviewerReport + journal={journal} + key={report.id} + onDownload={downloadFile} + onPreview={previewFile} + report={report} + reviewerIndex={index + 1} + showOwner + /> + ))} + </Fragment> + )} + </TabContent> + </Fragment> + )} + </Tabs> + </ContextualBox> +) export default compose( withFilePreview, diff --git a/packages/component-manuscript/src/components/ManuscriptLayout.js b/packages/component-manuscript/src/components/ManuscriptLayout.js index b054b71e438ae82970fbfbfe8680a231e5e8782e..fd2ec498305d7900618b764b49a098c9bf4fa812 100644 --- a/packages/component-manuscript/src/components/ManuscriptLayout.js +++ b/packages/component-manuscript/src/components/ManuscriptLayout.js @@ -5,6 +5,7 @@ import { Text, paddingHelper, ReviewerDetails, + AuthorReviews, HERecommendation, ManuscriptHeader, ManuscriptAssignHE, @@ -186,6 +187,14 @@ const ManuscriptLayout = ({ /> )} + {get(currentUser, 'permissions.authorCanViewReportsDetails', false) && ( + <AuthorReviews + currentUser={currentUser} + journal={journal} + reports={reviewerReports} + /> + )} + {get(currentUser, 'permissions.canMakeHERecommendation', false) && (!invitationsWithReviewers.length || reviewerRecommendations.length > 0) && ( diff --git a/packages/component-manuscript/src/components/ManuscriptPage.js b/packages/component-manuscript/src/components/ManuscriptPage.js index bada3abde798a23eb15fdba3558349f6f072710d..6889be60137a381afc5ebfa00303832a54d00220 100644 --- a/packages/component-manuscript/src/components/ManuscriptPage.js +++ b/packages/component-manuscript/src/components/ManuscriptPage.js @@ -52,6 +52,7 @@ import { canViewEditorialComments, pendingReviewerInvitation, canOverrideTechnicalChecks, + authorCanViewReportsDetails, getOwnPendingRecommendation, getOwnSubmittedRecommendation, getFragmentReviewerRecommendations, @@ -178,6 +179,10 @@ export default compose( canMakeDecision: canMakeDecision(state, collection, fragment), canEditManuscript: canEditManuscript(state, collection, fragment), canViewReviewersDetails: canViewReviewersDetails(state, collection), + authorCanViewReportsDetails: authorCanViewReportsDetails( + state, + collection, + ), canOverrideTechChecks: canOverrideTechnicalChecks(state, collection), }, },