Merge branch 'master-redesign' of https://github.com/sharelatex/web-sharelatex into master-redesign
This commit is contained in:
@@ -19,18 +19,27 @@ buildUserKey = (project_id, client_id)-> return "connected_user:#{project_id}:#{
|
||||
|
||||
module.exports =
|
||||
|
||||
markUserAsConnected: (project_id, client_id, user, callback = (err)->)->
|
||||
# Use the same method for when a user connects, and when a user sends a cursor
|
||||
# update. This way we don't care if the connected_user key has expired when
|
||||
# we receive a cursor update.
|
||||
updateUserPosition: (project_id, client_id, user, cursorData, callback = (err)->)->
|
||||
logger.log project_id:project_id, client_id:client_id, "marking user as connected"
|
||||
|
||||
multi = rclient.multi()
|
||||
multi.sadd buildProjectSetKey(project_id), client_id
|
||||
|
||||
multi.sadd buildProjectSetKey(project_id), client_id
|
||||
multi.expire buildProjectSetKey(project_id), FOUR_DAYS_IN_S
|
||||
multi.hset buildUserKey(project_id, client_id), "connected_at", Date.now()
|
||||
|
||||
multi.hset buildUserKey(project_id, client_id), "last_updated_at", Date.now()
|
||||
multi.hset buildUserKey(project_id, client_id), "user_id", user._id
|
||||
multi.hset buildUserKey(project_id, client_id), "first_name", user.first_name
|
||||
multi.hset buildUserKey(project_id, client_id), "last_name", user.last_name
|
||||
multi.hset buildUserKey(project_id, client_id), "email", user.email
|
||||
|
||||
if cursorData?
|
||||
multi.hset buildUserKey(project_id, client_id), "cursorData", JSON.stringify(cursorData)
|
||||
multi.expire buildUserKey(project_id, client_id), USER_TIMEOUT_IN_S
|
||||
|
||||
multi.exec (err)->
|
||||
if err?
|
||||
logger.err err:err, project_id:project_id, client_id:client_id, "problem marking user as connected"
|
||||
@@ -58,13 +67,6 @@ module.exports =
|
||||
result.cursorData = JSON.parse(result.cursorData)
|
||||
callback err, result
|
||||
|
||||
setUserCursorPosition: (project_id, client_id, cursorData, callback)->
|
||||
multi = rclient.multi()
|
||||
multi.hset buildUserKey(project_id, client_id), "cursorData", JSON.stringify(cursorData)
|
||||
multi.expire buildUserKey(project_id, client_id), USER_TIMEOUT_IN_S
|
||||
multi.exec callback
|
||||
|
||||
|
||||
getConnectedUsers: (project_id, callback)->
|
||||
self = @
|
||||
rclient.smembers buildProjectSetKey(project_id), (err, results)->
|
||||
|
||||
@@ -59,7 +59,7 @@ module.exports = EditorController =
|
||||
callback null, ProjectEditorHandler.buildProjectModelView(project), privilegeLevel, EditorController.protocolVersion
|
||||
|
||||
# can be done affter the connection has happened
|
||||
ConnectedUsersManager.markUserAsConnected project_id, client.id, user, ->
|
||||
ConnectedUsersManager.updateUserPosition project_id, client.id, user, null, ->
|
||||
|
||||
leaveProject: (client, user) ->
|
||||
self = @
|
||||
@@ -124,7 +124,12 @@ module.exports = EditorController =
|
||||
cursorData.email = email if email?
|
||||
if first_name? and last_name?
|
||||
cursorData.name = first_name + " " + last_name
|
||||
ConnectedUsersManager.setUserCursorPosition(project_id, client.id, {
|
||||
ConnectedUsersManager.updateUserPosition(project_id, client.id, {
|
||||
first_name: first_name,
|
||||
last_name: last_name,
|
||||
email: email,
|
||||
user_id: user_id
|
||||
}, {
|
||||
row: cursorData.row,
|
||||
column: cursorData.column,
|
||||
doc_id: cursorData.doc_id
|
||||
|
||||
Reference in New Issue
Block a user