Skip to content
Snippets Groups Projects
Commit 5871c375 authored by Tania Fecheta's avatar Tania Fecheta
Browse files

feat(reviewerReport): show reviewers name if he is the current user

parent 55965d3c
No related branches found
No related tags found
3 merge requests!176Sprint 24,!171Sprint 24,!166Hin 1051 reviewers see all reports
...@@ -11,6 +11,7 @@ const ReviewerReport = ({ ...@@ -11,6 +11,7 @@ const ReviewerReport = ({
onPreview, onPreview,
onDownload, onDownload,
reportFile, reportFile,
currentUser,
publicReport, publicReport,
privateReport, privateReport,
reviewerName, reviewerName,
...@@ -27,14 +28,12 @@ const ReviewerReport = ({ ...@@ -27,14 +28,12 @@ const ReviewerReport = ({
</Item> </Item>
<Item justify="flex-end"> <Item justify="flex-end">
{showOwner && ( <Fragment>
<Fragment> {showOwner && <Text>{reviewerName}</Text>}
<Text>{reviewerName}</Text> <Text customId ml={1} mr={1}>
<Text customId ml={1} mr={1}> {`Reviewer ${reviewerIndex}`}
{`Reviewer ${reviewerIndex}`} </Text>
</Text> </Fragment>
</Fragment>
)}
<DateParser timestamp={submittedOn}> <DateParser timestamp={submittedOn}>
{date => <Text>{date}</Text>} {date => <Text>{date}</Text>}
</DateParser> </DateParser>
...@@ -76,20 +75,22 @@ const ReviewerReport = ({ ...@@ -76,20 +75,22 @@ const ReviewerReport = ({
</Root> </Root>
) )
export default withProps(({ report, journal: { recommendations = [] } }) => ({ export default withProps(
recommendation: get( ({ report, currentUser, journal: { recommendations = [] } }) => ({
recommendations.find(r => r.value === report.recommendation), recommendation: get(
'label', recommendations.find(r => r.value === report.recommendation),
), 'label',
reportFile: get(report, 'comments.0.files.0'), ),
publicReport: get(report, 'comments.0.content'), reportFile: get(report, 'comments.0.files.0'),
privateReport: get(report, 'comments.1.content'), publicReport: get(report, 'comments.0.content'),
reviewerName: `${get(report, 'reviewer.firstName', '')} ${get( privateReport: get(report, 'comments.1.content'),
report, reviewerName: `${get(currentUser, 'firstName', '')} ${get(
'reviewer.lastName', currentUser,
'', '.lastName',
)}`, '',
}))(ReviewerReport) )}`,
}),
)(ReviewerReport)
// #region styles // #region styles
const Root = styled.div` const Root = styled.div`
......
...@@ -58,7 +58,6 @@ describe('Get collections route handler', () => { ...@@ -58,7 +58,6 @@ describe('Get collections route handler', () => {
expect(res.statusCode).toBe(200) expect(res.statusCode).toBe(200)
const data = JSON.parse(res._getData()) const data = JSON.parse(res._getData())
expect(data).toHaveLength(2) expect(data).toHaveLength(2)
expect(data[0].type).toEqual('collection') expect(data[0].type).toEqual('collection')
expect(data[0].currentVersion.recommendations).toHaveLength(6) expect(data[0].currentVersion.recommendations).toHaveLength(6)
......
...@@ -37,6 +37,7 @@ const ReviewerReports = ({ ...@@ -37,6 +37,7 @@ const ReviewerReports = ({
> >
{reports.map((report, index) => ( {reports.map((report, index) => (
<ReviewerReport <ReviewerReport
currentUser={currentUser}
journal={journal} journal={journal}
key={report.id} key={report.id}
onDownload={downloadFile} onDownload={downloadFile}
......
...@@ -72,9 +72,20 @@ const filterAuthorRecommendations = (recommendations, status, isLast) => { ...@@ -72,9 +72,20 @@ const filterAuthorRecommendations = (recommendations, status, isLast) => {
return [] return []
} }
const filterReviewerRecommendations = (recommendations, user) => { const filterReviewerRecommendations = (recommendations, user, isLast) => {
const ownRecommendation = recommendations.find(r => r.userId === user.id) 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 return recommendations
.filter( .filter(
r => r.submittedOn || r.recommendationType === 'editorRecommendation', r => r.submittedOn || r.recommendationType === 'editorRecommendation',
...@@ -85,6 +96,7 @@ const filterReviewerRecommendations = (recommendations, user) => { ...@@ -85,6 +96,7 @@ const filterReviewerRecommendations = (recommendations, user) => {
? { ...r, comments: r.comments.filter(c => c.public === true) } ? { ...r, comments: r.comments.filter(c => c.public === true) }
: { ...r }, : { ...r },
) )
}
return [] return []
} }
...@@ -122,32 +134,14 @@ const stripeFragmentByRole = ({ ...@@ -122,32 +134,14 @@ const stripeFragmentByRole = ({
: [], : [],
} }
case 'reviewer': case 'reviewer':
return isLast return {
? { ...fragment,
...fragment, files: omit(files, ['coverLetter']),
files: omit(files, ['coverLetter']), authors: authors.map(a => omit(a, ['email'])),
authors: authors.map(a => omit(a, ['email'])), recommendations: recommendations
recommendations: recommendations ? filterReviewerRecommendations(recommendations, user, isLast)
? 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)
: [],
}
case 'handlingEditor': case 'handlingEditor':
return { return {
...fragment, ...fragment,
...@@ -200,10 +194,13 @@ const getCollections = async ({ user, models }) => { ...@@ -200,10 +194,13 @@ const getCollections = async ({ user, models }) => {
} else { } else {
fragment = await models.Fragment.find(userPermission.objectId) fragment = await models.Fragment.find(userPermission.objectId)
collection = await models.Collection.find(fragment.collectionId) collection = await models.Collection.find(fragment.collectionId)
const latestFragmentId =
collection.fragments[collection.fragments.length - 1]
collection.currentVersion = stripeFragmentByRole({ collection.currentVersion = stripeFragmentByRole({
fragment, fragment,
role: userPermission.role, role: userPermission.role,
user, user,
isLast: latestFragmentId === fragment.id,
}) })
} }
} catch (e) { } catch (e) {
......
...@@ -132,7 +132,11 @@ describe('Authsome Helpers', () => { ...@@ -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 const { recommendations } = result
expect(recommendations).toHaveLength(1) expect(recommendations).toHaveLength(1)
expect(recommendations[0].comments).toHaveLength(1) expect(recommendations[0].comments).toHaveLength(1)
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment