mirror of
https://github.com/overleaf/overleaf.git
synced 2024-09-16 02:52:31 -04:00
Refresh members and invites in client when status changes
This commit is contained in:
parent
8f7603c324
commit
eafd61a90e
6 changed files with 42 additions and 8 deletions
|
@ -37,6 +37,7 @@ module.exports = CollaboratorsController =
|
||||||
user_id = req.params.user_id
|
user_id = req.params.user_id
|
||||||
CollaboratorsController._removeUserIdFromProject project_id, user_id, (error) ->
|
CollaboratorsController._removeUserIdFromProject project_id, user_id, (error) ->
|
||||||
return next(error) if error?
|
return next(error) if error?
|
||||||
|
EditorRealTimeController.emitToRoom project_id, 'project:membership:changed', {members: true}
|
||||||
res.sendStatus 204
|
res.sendStatus 204
|
||||||
|
|
||||||
removeSelfFromProject: (req, res, next = (error) ->) ->
|
removeSelfFromProject: (req, res, next = (error) ->) ->
|
||||||
|
|
|
@ -5,6 +5,7 @@ CollaboratorsHandler = require('./CollaboratorsHandler')
|
||||||
CollaboratorsInviteHandler = require('./CollaboratorsInviteHandler')
|
CollaboratorsInviteHandler = require('./CollaboratorsInviteHandler')
|
||||||
logger = require('logger-sharelatex')
|
logger = require('logger-sharelatex')
|
||||||
EmailHelper = require "../Helpers/EmailHelper"
|
EmailHelper = require "../Helpers/EmailHelper"
|
||||||
|
EditorRealTimeController = require("../Editor/EditorRealTimeController")
|
||||||
|
|
||||||
|
|
||||||
module.exports = CollaboratorsInviteController =
|
module.exports = CollaboratorsInviteController =
|
||||||
|
@ -38,6 +39,7 @@ module.exports = CollaboratorsInviteController =
|
||||||
logger.err {projectId, email, sendingUserId}, "error creating project invite"
|
logger.err {projectId, email, sendingUserId}, "error creating project invite"
|
||||||
return next(err)
|
return next(err)
|
||||||
logger.log {projectId, email, sendingUserId}, "invite created"
|
logger.log {projectId, email, sendingUserId}, "invite created"
|
||||||
|
EditorRealTimeController.emitToRoom projectId, 'project:membership:changed', {invites: true}
|
||||||
return res.json {invite: invite}
|
return res.json {invite: invite}
|
||||||
|
|
||||||
revokeInvite: (req, res, next) ->
|
revokeInvite: (req, res, next) ->
|
||||||
|
@ -48,6 +50,7 @@ module.exports = CollaboratorsInviteController =
|
||||||
if err?
|
if err?
|
||||||
logger.err {projectId, inviteId}, "error revoking invite"
|
logger.err {projectId, inviteId}, "error revoking invite"
|
||||||
return next(err)
|
return next(err)
|
||||||
|
EditorRealTimeController.emitToRoom projectId, 'project:membership:changed', {invites: true}
|
||||||
res.sendStatus(201)
|
res.sendStatus(201)
|
||||||
|
|
||||||
resendInvite: (req, res, next) ->
|
resendInvite: (req, res, next) ->
|
||||||
|
@ -113,4 +116,5 @@ module.exports = CollaboratorsInviteController =
|
||||||
if err?
|
if err?
|
||||||
logger.err {projectId, inviteId}, "error accepting invite by token"
|
logger.err {projectId, inviteId}, "error accepting invite by token"
|
||||||
return next(err)
|
return next(err)
|
||||||
|
EditorRealTimeController.emitToRoom projectId, 'project:membership:changed', {invites: true, members: true}
|
||||||
res.redirect "/project/#{projectId}"
|
res.redirect "/project/#{projectId}"
|
||||||
|
|
|
@ -1,13 +1,24 @@
|
||||||
define [
|
define [
|
||||||
"base"
|
"base"
|
||||||
], (App) ->
|
], (App) ->
|
||||||
App.controller "ShareController", ["$scope", "$modal", "event_tracking", ($scope, $modal, event_tracking) ->
|
App.controller "ShareController", ["$scope", "$modal", "ide", "projectInvites", "projectMembers", "event_tracking",
|
||||||
$scope.openShareProjectModal = () ->
|
($scope, $modal, ide, projectInvites, projectMembers, event_tracking) ->
|
||||||
event_tracking.sendCountlyOnce "ide-open-share-modal-once"
|
$scope.openShareProjectModal = () ->
|
||||||
|
event_tracking.sendCountlyOnce "ide-open-share-modal-once"
|
||||||
|
|
||||||
$modal.open(
|
$modal.open(
|
||||||
templateUrl: "shareProjectModalTemplate"
|
templateUrl: "shareProjectModalTemplate"
|
||||||
controller: "ShareProjectModalController"
|
controller: "ShareProjectModalController"
|
||||||
scope: $scope
|
scope: $scope
|
||||||
)
|
)
|
||||||
|
|
||||||
|
ide.socket.on 'project:membership:changed', (data) =>
|
||||||
|
if data.members
|
||||||
|
projectMembers.getMembers().success (responseData) =>
|
||||||
|
if responseData.members
|
||||||
|
$scope.project.members = responseData.members
|
||||||
|
if data.invites
|
||||||
|
projectInvites.getInvites().success (responseData) =>
|
||||||
|
if responseData.invites
|
||||||
|
$scope.project.invites = responseData.invites
|
||||||
]
|
]
|
||||||
|
|
|
@ -23,6 +23,8 @@ define [
|
||||||
allowedNoOfMembers = $scope.project.features.collaborators
|
allowedNoOfMembers = $scope.project.features.collaborators
|
||||||
$scope.canAddCollaborators = noOfMembers < allowedNoOfMembers or allowedNoOfMembers == INFINITE_COLLABORATORS
|
$scope.canAddCollaborators = noOfMembers < allowedNoOfMembers or allowedNoOfMembers == INFINITE_COLLABORATORS
|
||||||
|
|
||||||
|
window._m = projectMembers
|
||||||
|
|
||||||
$scope.autocompleteContacts = []
|
$scope.autocompleteContacts = []
|
||||||
do loadAutocompleteUsers = () ->
|
do loadAutocompleteUsers = () ->
|
||||||
$http.get "/user/contacts"
|
$http.get "/user/contacts"
|
||||||
|
|
|
@ -128,6 +128,9 @@ describe "CollaboratorsController", ->
|
||||||
it "should send the back a success response", ->
|
it "should send the back a success response", ->
|
||||||
@res.sendStatus.calledWith(204).should.equal true
|
@res.sendStatus.calledWith(204).should.equal true
|
||||||
|
|
||||||
|
it 'should have called emitToRoom', ->
|
||||||
|
@EditorRealTimeController.emitToRoom.calledWith(@project_id, 'project:membership:changed').should.equal true
|
||||||
|
|
||||||
describe "removeSelfFromProject", ->
|
describe "removeSelfFromProject", ->
|
||||||
beforeEach ->
|
beforeEach ->
|
||||||
@req.session =
|
@req.session =
|
||||||
|
|
|
@ -22,6 +22,7 @@ describe "CollaboratorsInviteController", ->
|
||||||
"./CollaboratorsHandler": @CollaboratorsHandler = {}
|
"./CollaboratorsHandler": @CollaboratorsHandler = {}
|
||||||
"./CollaboratorsInviteHandler": @CollaboratorsInviteHandler = {}
|
"./CollaboratorsInviteHandler": @CollaboratorsInviteHandler = {}
|
||||||
'logger-sharelatex': @logger = {err: sinon.stub(), error: sinon.stub(), log: sinon.stub()}
|
'logger-sharelatex': @logger = {err: sinon.stub(), error: sinon.stub(), log: sinon.stub()}
|
||||||
|
"../Editor/EditorRealTimeController": @EditorRealTimeController = {emitToRoom: sinon.stub()}
|
||||||
@res = new MockResponse()
|
@res = new MockResponse()
|
||||||
@req = new MockRequest()
|
@req = new MockRequest()
|
||||||
|
|
||||||
|
@ -112,6 +113,10 @@ describe "CollaboratorsInviteController", ->
|
||||||
@CollaboratorsInviteHandler.inviteToProject.callCount.should.equal 1
|
@CollaboratorsInviteHandler.inviteToProject.callCount.should.equal 1
|
||||||
@CollaboratorsInviteHandler.inviteToProject.calledWith(@project_id,@current_user_id,@targetEmail,@privileges).should.equal true
|
@CollaboratorsInviteHandler.inviteToProject.calledWith(@project_id,@current_user_id,@targetEmail,@privileges).should.equal true
|
||||||
|
|
||||||
|
it 'should have called emitToRoom', ->
|
||||||
|
@EditorRealTimeController.emitToRoom.callCount.should.equal 1
|
||||||
|
@EditorRealTimeController.emitToRoom.calledWith(@project_id, 'project:membership:changed').should.equal true
|
||||||
|
|
||||||
describe 'when the user is not allowed to add more collaborators', ->
|
describe 'when the user is not allowed to add more collaborators', ->
|
||||||
|
|
||||||
beforeEach ->
|
beforeEach ->
|
||||||
|
@ -499,6 +504,10 @@ describe "CollaboratorsInviteController", ->
|
||||||
it 'should have called revokeInvite', ->
|
it 'should have called revokeInvite', ->
|
||||||
@CollaboratorsInviteHandler.revokeInvite.callCount.should.equal 1
|
@CollaboratorsInviteHandler.revokeInvite.callCount.should.equal 1
|
||||||
|
|
||||||
|
it 'should have called emitToRoom', ->
|
||||||
|
@EditorRealTimeController.emitToRoom.callCount.should.equal 1
|
||||||
|
@EditorRealTimeController.emitToRoom.calledWith(@project_id, 'project:membership:changed').should.equal true
|
||||||
|
|
||||||
describe 'when revokeInvite produces an error', ->
|
describe 'when revokeInvite produces an error', ->
|
||||||
|
|
||||||
beforeEach ->
|
beforeEach ->
|
||||||
|
@ -544,6 +553,10 @@ describe "CollaboratorsInviteController", ->
|
||||||
it 'should have called acceptInvite', ->
|
it 'should have called acceptInvite', ->
|
||||||
@CollaboratorsInviteHandler.acceptInvite.callCount.should.equal 1
|
@CollaboratorsInviteHandler.acceptInvite.callCount.should.equal 1
|
||||||
|
|
||||||
|
it 'should have called emitToRoom', ->
|
||||||
|
@EditorRealTimeController.emitToRoom.callCount.should.equal 1
|
||||||
|
@EditorRealTimeController.emitToRoom.calledWith(@project_id, 'project:membership:changed').should.equal true
|
||||||
|
|
||||||
describe 'when revokeInvite produces an error', ->
|
describe 'when revokeInvite produces an error', ->
|
||||||
|
|
||||||
beforeEach ->
|
beforeEach ->
|
||||||
|
|
Loading…
Reference in a new issue