mirror of
https://github.com/overleaf/overleaf.git
synced 2025-04-05 05:18:21 +00:00
Add a getInvitedMembersWithPrivilegeLevels
function.
Then use it to build the loadProject view-model.
This commit is contained in:
parent
cf54989e6a
commit
8460160076
4 changed files with 53 additions and 16 deletions
|
@ -53,20 +53,31 @@ module.exports = CollaboratorsHandler =
|
|||
last_name: 1,
|
||||
signUpDate: 1
|
||||
}
|
||||
_loadMembers: (members, callback=(error, users) ->) ->
|
||||
result = []
|
||||
async.mapLimit members, 3,
|
||||
(member, cb) ->
|
||||
UserGetter.getUserById member.id, CollaboratorsHandler.USER_PROJECTION, (error, user) ->
|
||||
return cb(error) if error?
|
||||
if user?
|
||||
result.push { user: user, privilegeLevel: member.privilegeLevel }
|
||||
cb()
|
||||
(error) ->
|
||||
return callback(error) if error?
|
||||
callback null, result
|
||||
|
||||
getMembersWithPrivilegeLevels: (project_id, callback = (error, members) ->) ->
|
||||
CollaboratorsHandler.getMemberIdsWithPrivilegeLevels project_id, (error, members = []) ->
|
||||
return callback(error) if error?
|
||||
result = []
|
||||
async.mapLimit members, 3,
|
||||
(member, cb) ->
|
||||
UserGetter.getUserById member.id, CollaboratorsHandler.USER_PROJECTION, (error, user) ->
|
||||
return cb(error) if error?
|
||||
if user?
|
||||
result.push { user: user, privilegeLevel: member.privilegeLevel }
|
||||
cb()
|
||||
(error) ->
|
||||
return callback(error) if error?
|
||||
callback null, result
|
||||
CollaboratorsHandler._loadMembers members, (error, users) ->
|
||||
callback error, users
|
||||
|
||||
getInvitedMembersWithPrivilegeLevels: (project_id, callback = (error, members) ->) ->
|
||||
CollaboratorsHandler.getMemberIdsWithPrivilegeLevels project_id, (error, members = []) ->
|
||||
return callback(error) if error?
|
||||
members = members.filter((m) -> m.source == Sources.INVITE)
|
||||
CollaboratorsHandler._loadMembers members, (error, users) ->
|
||||
callback error, users
|
||||
|
||||
getMemberIdPrivilegeLevel: (user_id, project_id, callback = (error, privilegeLevel) ->) ->
|
||||
# In future if the schema changes and getting all member ids is more expensive (multiple documents)
|
||||
|
|
|
@ -35,7 +35,7 @@ module.exports = EditorHttpController =
|
|||
ProjectGetter.getProjectWithoutDocLines project_id, (error, project) ->
|
||||
return callback(error) if error?
|
||||
return callback(new Error("not found")) if !project?
|
||||
CollaboratorsHandler.getMembersWithPrivilegeLevels project, (error, members) ->
|
||||
CollaboratorsHandler.getInvitedMembersWithPrivilegeLevels project, (error, members) ->
|
||||
return callback(error) if error?
|
||||
UserGetter.getUser user_id, { isAdmin: true }, (error, user) ->
|
||||
return callback(error) if error?
|
||||
|
|
|
@ -87,9 +87,9 @@ describe "CollaboratorsHandler", ->
|
|||
beforeEach ->
|
||||
@CollaboratorHandler.getMemberIdsWithPrivilegeLevels = sinon.stub()
|
||||
@CollaboratorHandler.getMemberIdsWithPrivilegeLevels.withArgs(@project_id).yields(null, [
|
||||
{ id: "read-only-ref-1", privilegeLevel: "readOnly", source: 'invite' }
|
||||
{ id: "read-only-ref-1", privilegeLevel: "readOnly", source: 'token' }
|
||||
{ id: "read-only-ref-2", privilegeLevel: "readOnly", source: 'invite' }
|
||||
{ id: "read-write-ref-1", privilegeLevel: "readAndWrite", source: 'invite' }
|
||||
{ id: "read-write-ref-1", privilegeLevel: "readAndWrite", source: 'token' }
|
||||
{ id: "read-write-ref-2", privilegeLevel: "readAndWrite", source: 'invite' }
|
||||
{ id: "doesnt-exist", privilegeLevel: "readAndWrite", source: 'invite' }
|
||||
])
|
||||
|
@ -111,6 +111,32 @@ describe "CollaboratorsHandler", ->
|
|||
])
|
||||
.should.equal true
|
||||
|
||||
describe "getInvitedMembersWithPrivilegeLevels", ->
|
||||
beforeEach ->
|
||||
@CollaboratorHandler.getMemberIdsWithPrivilegeLevels = sinon.stub()
|
||||
@CollaboratorHandler.getMemberIdsWithPrivilegeLevels.withArgs(@project_id).yields(null, [
|
||||
{ id: "read-only-ref-1", privilegeLevel: "readOnly", source: 'token' }
|
||||
{ id: "read-only-ref-2", privilegeLevel: "readOnly", source: 'invite' }
|
||||
{ id: "read-write-ref-1", privilegeLevel: "readAndWrite", source: 'token' }
|
||||
{ id: "read-write-ref-2", privilegeLevel: "readAndWrite", source: 'invite' }
|
||||
{ id: "doesnt-exist", privilegeLevel: "readAndWrite", source: 'invite' }
|
||||
])
|
||||
@UserGetter.getUserById = sinon.stub()
|
||||
@UserGetter.getUserById.withArgs("read-only-ref-1").yields(null, { _id: "read-only-ref-1" })
|
||||
@UserGetter.getUserById.withArgs("read-only-ref-2").yields(null, { _id: "read-only-ref-2" })
|
||||
@UserGetter.getUserById.withArgs("read-write-ref-1").yields(null, { _id: "read-write-ref-1" })
|
||||
@UserGetter.getUserById.withArgs("read-write-ref-2").yields(null, { _id: "read-write-ref-2" })
|
||||
@UserGetter.getUserById.withArgs("doesnt-exist").yields(null, null)
|
||||
@CollaboratorHandler.getInvitedMembersWithPrivilegeLevels @project_id, @callback
|
||||
|
||||
it "should return an array of invited members with their privilege levels", ->
|
||||
@callback
|
||||
.calledWith(null, [
|
||||
{ user: { _id: "read-only-ref-2" }, privilegeLevel: "readOnly" }
|
||||
{ user: { _id: "read-write-ref-2" }, privilegeLevel: "readAndWrite" }
|
||||
])
|
||||
.should.equal true
|
||||
|
||||
describe "getMemberIdPrivilegeLevel", ->
|
||||
beforeEach ->
|
||||
@CollaboratorHandler.getMemberIdsWithPrivilegeLevels = sinon.stub()
|
||||
|
|
|
@ -109,7 +109,7 @@ describe "EditorHttpController", ->
|
|||
]
|
||||
@ProjectEditorHandler.buildProjectModelView = sinon.stub().returns(@projectModelView)
|
||||
@ProjectGetter.getProjectWithoutDocLines = sinon.stub().callsArgWith(1, null, @project)
|
||||
@CollaboratorsHandler.getMembersWithPrivilegeLevels = sinon.stub().callsArgWith(1, null, @members)
|
||||
@CollaboratorsHandler.getInvitedMembersWithPrivilegeLevels = sinon.stub().callsArgWith(1, null, @members)
|
||||
@CollaboratorsInviteHandler.getAllInvites = sinon.stub().callsArgWith(1, null, @invites)
|
||||
@UserGetter.getUser = sinon.stub().callsArgWith(2, null, @user)
|
||||
|
||||
|
@ -125,7 +125,7 @@ describe "EditorHttpController", ->
|
|||
.should.equal true
|
||||
|
||||
it "should get the list of users in the project", ->
|
||||
@CollaboratorsHandler.getMembersWithPrivilegeLevels
|
||||
@CollaboratorsHandler.getInvitedMembersWithPrivilegeLevels
|
||||
.calledWith(@project)
|
||||
.should.equal true
|
||||
|
||||
|
|
Loading…
Reference in a new issue