From fb27ec2024bf3a05b7c4d1be855ef22089db0a40 Mon Sep 17 00:00:00 2001
From: Mihail Hagiu <mihail.hagiu@thinslices.com>
Date: Thu, 1 Nov 2018 11:08:43 +0200
Subject: [PATCH] feat(GetCollections): Reviewer correctly sees manuscript
 versions

---
 .../src/routes/collections/get.js                   |  7 +------
 packages/xpub-faraday/config/authsome-helpers.js    | 13 +++++++++++--
 2 files changed, 12 insertions(+), 8 deletions(-)

diff --git a/packages/component-manuscript-manager/src/routes/collections/get.js b/packages/component-manuscript-manager/src/routes/collections/get.js
index 1314ffda0..ddeeb504d 100644
--- a/packages/component-manuscript-manager/src/routes/collections/get.js
+++ b/packages/component-manuscript-manager/src/routes/collections/get.js
@@ -1,8 +1,3 @@
-const { last, get } = require('lodash')
-
-const filterDuplicates = collection =>
-  get(collection, 'currentVersion.id') === last(collection.fragments)
-
 const {
   authsome: authsomeHelper,
 } = require('pubsweet-component-helper-service')
@@ -21,5 +16,5 @@ module.exports = models => async (req, res) => {
     })
   }
 
-  res.status(200).json(collections.filter(filterDuplicates))
+  res.status(200).json(collections)
 }
diff --git a/packages/xpub-faraday/config/authsome-helpers.js b/packages/xpub-faraday/config/authsome-helpers.js
index c92571ecc..de88ed38e 100644
--- a/packages/xpub-faraday/config/authsome-helpers.js
+++ b/packages/xpub-faraday/config/authsome-helpers.js
@@ -1,4 +1,4 @@
-const { omit, get, last } = require('lodash')
+const { omit, get, last, chain } = require('lodash')
 const config = require('config')
 const logger = require('@pubsweet/logger')
 
@@ -207,7 +207,7 @@ const parseUser = ({ user }) => omit(user, sensitiveUserProperties)
 const getCollections = async ({ user, models }) => {
   const userPermisssions = await getUserPermissions({ user, Team: models.Team })
 
-  return (await Promise.all(
+  const collections = (await Promise.all(
     userPermisssions.map(async up => {
       let fragment = {}
       let collection = {}
@@ -253,6 +253,11 @@ const getCollections = async ({ user, models }) => {
       }
     }),
   )).filter(Boolean)
+  return chain(collections)
+    .sortBy(c => c.currentVersion.version)
+    .reverse()
+    .uniqBy('id')
+    .value()
 }
 
 async function updateReviewerVisibleStatusByInvitation({
@@ -278,6 +283,10 @@ async function updateReviewerVisibleStatusByInvitation({
     return get(statuses, `${collection.status}.reviewer.label`)
   }
 
+  if (!invitation) {
+    return get(statuses, `reviewCompleted.reviewer.label`)
+  }
+
   return get(invitation, 'hasAnswer', false) &&
     get(invitation, 'isAccepted', false)
     ? get(statuses, `underReview.reviewer.label`)
-- 
GitLab