Merge pull request #2871 from tiblu/pad_userlist_add_usersOnline_fix_bug_in_users

pad_userlist.js: BUGFIX: users() returning duplicates on several calls. FEATURE: usersOnline() returns only online users
This commit is contained in:
John McLear 2016-01-05 21:15:52 +00:00
commit dbc777dd13
2 changed files with 20 additions and 9 deletions

View File

@ -414,6 +414,12 @@ function getCollabClient(ace2editor, serverVars, initialUserInfo, options, _pad)
{ {
callbacks.onServerMessage(msg.payload); callbacks.onServerMessage(msg.payload);
} }
//HACKISH: User messages do not have "payload" but "userInfo", so that all "handleClientMessage_USER_" hooks would work, populate payload
//FIXME: USER_* messages to have "payload" property instead of "userInfo", seems like a quite a big work
if(msg.type.indexOf("USER_") > -1) {
msg.payload = msg.userInfo;
}
hooks.callAll('handleClientMessage_' + msg.type, {payload: msg.payload}); hooks.callAll('handleClientMessage_' + msg.type, {payload: msg.payload});
} }

View File

@ -508,12 +508,18 @@ var paduserlist = (function()
}); });
// //
}, },
users: function(){ usersOnline: function()
// Returns an object of users who have been on this pad {
// Firstly we have to get live data.. // Returns an object of users who are currently online on this pad
var userList = otherUsersInfo; var userList = [].concat(otherUsersInfo); // Make a copy of the otherUsersInfo, otherwise every call to users modifies the referenced array
// Now we need to add ourselves.. // Now we need to add ourselves..
userList.push(myUserInfo); userList.push(myUserInfo);
return userList;
},
users: function(){
// Returns an object of users who have been on this pad
var userList = self.usersOnline();
// Now we add historical authors // Now we add historical authors
var historical = clientVars.collab_client_vars.historicalAuthorData; var historical = clientVars.collab_client_vars.historicalAuthorData;
for (var key in historical){ for (var key in historical){
@ -528,7 +534,6 @@ var paduserlist = (function()
if(exists === false){ if(exists === false){
userList.push(historical[key]); userList.push(historical[key]);
} }
} }
return userList; return userList;
}, },