diff --git a/packages/component-faraday-ui/src/ReviewerReport.js b/packages/component-faraday-ui/src/ReviewerReport.js index 12391694d8b8032f53d43932629ba1f4d20a12aa..279807cb12c406a82b037265fb353cecd4381b2a 100644 --- a/packages/component-faraday-ui/src/ReviewerReport.js +++ b/packages/component-faraday-ui/src/ReviewerReport.js @@ -11,6 +11,7 @@ const ReviewerReport = ({ onPreview, onDownload, reportFile, + currentUser, publicReport, privateReport, reviewerName, @@ -27,14 +28,12 @@ const ReviewerReport = ({ </Item> <Item justify="flex-end"> - {showOwner && ( - <Fragment> - <Text>{reviewerName}</Text> - <Text customId ml={1} mr={1}> - {`Reviewer ${reviewerIndex}`} - </Text> - </Fragment> - )} + <Fragment> + {showOwner && <Text>{reviewerName}</Text>} + <Text customId ml={1} mr={1}> + {`Reviewer ${reviewerIndex}`} + </Text> + </Fragment> <DateParser timestamp={submittedOn}> {date => <Text>{date}</Text>} </DateParser> @@ -76,20 +75,22 @@ const ReviewerReport = ({ </Root> ) -export default withProps(({ report, journal: { recommendations = [] } }) => ({ - recommendation: get( - recommendations.find(r => r.value === report.recommendation), - 'label', - ), - reportFile: get(report, 'comments.0.files.0'), - publicReport: get(report, 'comments.0.content'), - privateReport: get(report, 'comments.1.content'), - reviewerName: `${get(report, 'reviewer.firstName', '')} ${get( - report, - 'reviewer.lastName', - '', - )}`, -}))(ReviewerReport) +export default withProps( + ({ report, currentUser, journal: { recommendations = [] } }) => ({ + recommendation: get( + recommendations.find(r => r.value === report.recommendation), + 'label', + ), + reportFile: get(report, 'comments.0.files.0'), + publicReport: get(report, 'comments.0.content'), + privateReport: get(report, 'comments.1.content'), + reviewerName: `${get(currentUser, 'firstName', '')} ${get( + currentUser, + '.lastName', + '', + )}`, + }), +)(ReviewerReport) // #region styles const Root = styled.div` diff --git a/packages/component-manuscript-manager/src/tests/collections/get.test.js b/packages/component-manuscript-manager/src/tests/collections/get.test.js index aa4a1cfec4a3e9de92809e07e056a81b2aaede1f..b721805c99c9b00833fcb953cc16f5a529840164 100644 --- a/packages/component-manuscript-manager/src/tests/collections/get.test.js +++ b/packages/component-manuscript-manager/src/tests/collections/get.test.js @@ -58,7 +58,6 @@ describe('Get collections route handler', () => { expect(res.statusCode).toBe(200) const data = JSON.parse(res._getData()) - expect(data).toHaveLength(2) expect(data[0].type).toEqual('collection') expect(data[0].currentVersion.recommendations).toHaveLength(6) diff --git a/packages/component-manuscript/src/components/ReviewerReports.js b/packages/component-manuscript/src/components/ReviewerReports.js index 2e146ac63c39ae86dffdd0df256436a02282e9e2..1f82bbc34eb5aee58124733cac320676efada4e2 100644 --- a/packages/component-manuscript/src/components/ReviewerReports.js +++ b/packages/component-manuscript/src/components/ReviewerReports.js @@ -37,6 +37,7 @@ const ReviewerReports = ({ > {reports.map((report, index) => ( <ReviewerReport + currentUser={currentUser} journal={journal} key={report.id} onDownload={downloadFile} diff --git a/packages/xpub-faraday/config/authsome-helpers.js b/packages/xpub-faraday/config/authsome-helpers.js index 878312bff4cfc3d135f07e03810eda75af11cebd..143cbcd756b7d08090cedcc0893a77602f6afc67 100644 --- a/packages/xpub-faraday/config/authsome-helpers.js +++ b/packages/xpub-faraday/config/authsome-helpers.js @@ -72,9 +72,20 @@ const filterAuthorRecommendations = (recommendations, status, isLast) => { return [] } -const filterReviewerRecommendations = (recommendations, user) => { +const filterReviewerRecommendations = (recommendations, user, isLast) => { const ownRecommendation = recommendations.find(r => r.userId === user.id) - if (ownRecommendation) + if (isLast) { + return recommendations + .filter( + r => + r.userId === user.id || + r.recommendationType === 'editorRecommendation', + ) + .map(r => ({ + ...r, + comments: r.comments.filter(c => c.public === true), + })) + } else if (ownRecommendation) { return recommendations .filter( r => r.submittedOn || r.recommendationType === 'editorRecommendation', @@ -85,6 +96,7 @@ const filterReviewerRecommendations = (recommendations, user) => { ? { ...r, comments: r.comments.filter(c => c.public === true) } : { ...r }, ) + } return [] } @@ -122,32 +134,14 @@ const stripeFragmentByRole = ({ : [], } case 'reviewer': - return isLast - ? { - ...fragment, - files: omit(files, ['coverLetter']), - authors: authors.map(a => omit(a, ['email'])), - recommendations: recommendations - ? recommendations - .filter( - r => - r.userId === user.id || - r.recommendationType === 'editorRecommendation', - ) - .map(r => ({ - ...r, - comments: r.comments.filter(c => c.public === true), - })) - : [], - } - : { - ...fragment, - files: omit(files, ['coverLetter']), - authors: authors.map(a => omit(a, ['email'])), - recommendations: recommendations - ? filterReviewerRecommendations(recommendations, user) - : [], - } + return { + ...fragment, + files: omit(files, ['coverLetter']), + authors: authors.map(a => omit(a, ['email'])), + recommendations: recommendations + ? filterReviewerRecommendations(recommendations, user, isLast) + : [], + } case 'handlingEditor': return { ...fragment, @@ -200,10 +194,13 @@ const getCollections = async ({ user, models }) => { } else { fragment = await models.Fragment.find(userPermission.objectId) collection = await models.Collection.find(fragment.collectionId) + const latestFragmentId = + collection.fragments[collection.fragments.length - 1] collection.currentVersion = stripeFragmentByRole({ fragment, role: userPermission.role, user, + isLast: latestFragmentId === fragment.id, }) } } catch (e) { diff --git a/packages/xpub-faraday/tests/config/authsome-helpers.test.js b/packages/xpub-faraday/tests/config/authsome-helpers.test.js index c5634168fdf6ab29134874c7c3fa9ee96183b2d0..d28bfc3f2205a1422d7429e928154cb1830a1da4 100644 --- a/packages/xpub-faraday/tests/config/authsome-helpers.test.js +++ b/packages/xpub-faraday/tests/config/authsome-helpers.test.js @@ -132,7 +132,11 @@ describe('Authsome Helpers', () => { ], }, ] - const result = ah.stripeFragmentByRole({ fragment, role: 'reviewer' }) + const result = ah.stripeFragmentByRole({ + fragment, + role: 'reviewer', + isLast: true, + }) const { recommendations } = result expect(recommendations).toHaveLength(1) expect(recommendations[0].comments).toHaveLength(1)