From b969526c197efadc61de4f170993ffd96bd59368 Mon Sep 17 00:00:00 2001 From: James Allen Date: Wed, 9 Jan 2019 13:24:14 +0000 Subject: [PATCH] Merge pull request #1371 from sharelatex/as-fix-dash-user-stubs Handle UserStubs when linking projects with owners GitOrigin-RevId: eb54df048ccf7fffd3feac14fbb5c8991efd47c3 --- .../Features/Project/ProjectController.coffee | 2 +- services/web/app/views/project/list/item.pug | 7 +++++++ .../public/src/main/project-list/project-list.js | 16 +++++++++++++--- .../coffee/Project/ProjectControllerTests.coffee | 3 +++ 4 files changed, 24 insertions(+), 4 deletions(-) diff --git a/services/web/app/coffee/Features/Project/ProjectController.coffee b/services/web/app/coffee/Features/Project/ProjectController.coffee index 28fc20e2cd..ff9b2c0cc8 100644 --- a/services/web/app/coffee/Features/Project/ProjectController.coffee +++ b/services/web/app/coffee/Features/Project/ProjectController.coffee @@ -466,7 +466,7 @@ module.exports = ProjectController = for user_id, _ of users do (user_id) -> jobs.push (callback) -> - User.findById user_id, "first_name last_name", (error, user) -> + UserGetter.getUserOrUserStubById user_id, { first_name: 1, last_name: 1 }, (error, user) -> return callback(error) if error? users[user_id] = user callback() diff --git a/services/web/app/views/project/list/item.pug b/services/web/app/views/project/list/item.pug index b97daf16bf..e55a10d28d 100644 --- a/services/web/app/views/project/list/item.pug +++ b/services/web/app/views/project/list/item.pug @@ -33,6 +33,13 @@ div(class=titleClasses) .col-xs-2 span.owner {{ownerName()}} + |   + i.fa.fa-question-circle.small( + ng-if="hasGenericOwnerName()" + tooltip="This project is owned by a user who hasn’t yet migrated their account to Overleaf v2" + tooltip-append-to-body="true" + aria-hidden="true" + ) span(ng-if="isLinkSharingProject(project)") |   i.fa.fa-link.small( diff --git a/services/web/public/src/main/project-list/project-list.js b/services/web/public/src/main/project-list/project-list.js index 5ba2ede256..fb92c72776 100644 --- a/services/web/public/src/main/project-list/project-list.js +++ b/services/web/public/src/main/project-list/project-list.js @@ -691,13 +691,23 @@ define(['base'], function(App) { $scope.isLinkSharingProject = project => project.source === 'token' + $scope.hasGenericOwnerName = () => { + const { first_name, last_name, email } = $scope.project.owner + return !first_name && !last_name && !email + } + $scope.ownerName = function() { if ($scope.project.accessLevel === 'owner') { return 'You' } else if ($scope.project.owner != null) { - return [$scope.project.owner.first_name, $scope.project.owner.last_name] - .filter(n => n != null) - .join(' ') + const { first_name, last_name, email } = $scope.project.owner + if (first_name || last_name) { + return [first_name, last_name].filter(n => n != null).join(' ') + } else if (email) { + return email + } else { + return 'An Overleaf v1 User' + } } else { return 'None' } diff --git a/services/web/test/unit/coffee/Project/ProjectControllerTests.coffee b/services/web/test/unit/coffee/Project/ProjectControllerTests.coffee index cce483dbac..d5fec1d038 100644 --- a/services/web/test/unit/coffee/Project/ProjectControllerTests.coffee +++ b/services/web/test/unit/coffee/Project/ProjectControllerTests.coffee @@ -79,6 +79,7 @@ describe "ProjectController", -> ipMatcherAffiliation: sinon.stub().returns({create: sinon.stub()}) @UserGetter = getUser: sinon.stub().callsArgWith 2, null, {lastLoginIp: '192.170.18.2'} + getUserOrUserStubById: sinon.stub().callsArgWith 2, null, {} @Modules = hooks: fire: sinon.stub() @@ -304,6 +305,8 @@ describe "ProjectController", -> @users[@user._id] = @user # Owner @UserModel.findById = (id, fields, callback) => callback null, @users[id] + @UserGetter.getUserOrUserStubById = (id, fields, callback) => + callback null, @users[id] @LimitationsManager.hasPaidSubscription.callsArgWith(1, null, false) @TagsHandler.getAllTags.callsArgWith(1, null, @tags, {})