From 591733c52ae25eeb47d8c9b54b26f5088a1b5e23 Mon Sep 17 00:00:00 2001 From: Bogdan Cochior <bogdan.cochior@thinslices.com> Date: Fri, 6 Jul 2018 11:39:09 +0300 Subject: [PATCH] fix(author-details): show reports for previous versions --- packages/xpub-faraday/config/authsome-helpers.js | 7 ++++--- packages/xpub-faraday/config/authsome-mode.js | 7 +++++-- packages/xpub-faraday/tests/authsome-helpers.test.js | 2 ++ 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/packages/xpub-faraday/config/authsome-helpers.js b/packages/xpub-faraday/config/authsome-helpers.js index 56f1495a3..49d976c4c 100644 --- a/packages/xpub-faraday/config/authsome-helpers.js +++ b/packages/xpub-faraday/config/authsome-helpers.js @@ -126,9 +126,9 @@ const hasFragmentInDraft = async ({ object, Fragment }) => { return isInDraft(fragment) } -const filterAuthorRecommendations = (recommendations, status) => { +const filterAuthorRecommendations = (recommendations, status, isLast) => { const canViewRecommendations = authorAllowedStatuses.includes(status) - if (canViewRecommendations) { + if (canViewRecommendations || !isLast) { return recommendations.map(r => ({ ...r, comments: r.comments ? r.comments.filter(c => c.public) : [], @@ -160,6 +160,7 @@ const stripeFragmentByRole = ({ role = '', status = 'draft', user = {}, + isLast = false, }) => { const { recommendations, files, authors } = fragment switch (role) { @@ -167,7 +168,7 @@ const stripeFragmentByRole = ({ return { ...fragment, recommendations: recommendations - ? filterAuthorRecommendations(recommendations, status) + ? filterAuthorRecommendations(recommendations, status, isLast) : [], } case 'reviewer': diff --git a/packages/xpub-faraday/config/authsome-mode.js b/packages/xpub-faraday/config/authsome-mode.js index 9b444f970..143c49ac2 100644 --- a/packages/xpub-faraday/config/authsome-mode.js +++ b/packages/xpub-faraday/config/authsome-mode.js @@ -1,5 +1,5 @@ const config = require('config') -const { get, pickBy } = require('lodash') +const { get, pickBy, last } = require('lodash') const statuses = config.get('statuses') const helpers = require('./authsome-helpers') @@ -133,7 +133,9 @@ async function applyAuthenticatedUserPolicy(user, operation, object, context) { if (!permission) return false const collectionId = get(object, 'collectionId') - const { status } = await context.models.Collection.find(collectionId) + const { status, fragments } = await context.models.Collection.find( + collectionId, + ) return { filter: fragment => @@ -142,6 +144,7 @@ async function applyAuthenticatedUserPolicy(user, operation, object, context) { role: permission.role, status, user, + isLast: last(fragments) === fragment.id, }), } } diff --git a/packages/xpub-faraday/tests/authsome-helpers.test.js b/packages/xpub-faraday/tests/authsome-helpers.test.js index cdc942b01..0be47181d 100644 --- a/packages/xpub-faraday/tests/authsome-helpers.test.js +++ b/packages/xpub-faraday/tests/authsome-helpers.test.js @@ -129,10 +129,12 @@ describe('Authsome Helpers', () => { ], }, ] + const { recommendations } = ah.stripeFragmentByRole({ fragment, role: 'author', status: 'underReview', + isLast: true, }) expect(recommendations).toHaveLength(0) }) -- GitLab