diff --git a/public/src/modules/chat.js b/public/src/modules/chat.js index 9670258ec6..fca3edb5f8 100644 --- a/public/src/modules/chat.js +++ b/public/src/modules/chat.js @@ -41,11 +41,10 @@ define(['taskbar', 'string', 'sounds'], function(taskbar, S, sounds) { .html('' + userObj.username + '') + ');">'+ + ' ' + + '' + + userObj.username + '') .appendTo(chatsListEl); } }); diff --git a/src/messaging.js b/src/messaging.js index 443b557096..46dbec19ca 100644 --- a/src/messaging.js +++ b/src/messaging.js @@ -131,7 +131,15 @@ var db = require('./database'), return !!user.uid; }); - callback(null, users); + async.map(users, function(userData, next) { + user.isOnline(userData.uid, function(err, data) { + if (err) { + return next(err); + } + userData.status = data.status; + next(null, userData); + }); + }, callback); }); }); }; diff --git a/src/socket.io/user.js b/src/socket.io/user.js index c3094fbcff..6ee6657463 100644 --- a/src/socket.io/user.js +++ b/src/socket.io/user.js @@ -48,32 +48,7 @@ SocketUser.reset.commit = function(socket, data, callback) { }; SocketUser.isOnline = function(socket, uid, callback) { - user.getUserField(uid, 'status', function(err, status) { - if(err) { - return callback(err); - } - - if(!status) { - status = 'online'; - } - - var online = module.parent.exports.isUserOnline(uid); - - if(!online) { - status = 'offline'; - } - - if(status === 'offline') { - online = false; - } - - callback(null, { - online: online, - uid: uid, - timestamp: Date.now(), - status: status - }); - }); + user.isOnline(uid, callback); }; SocketUser.changePassword = function(socket, data, callback) { diff --git a/src/user.js b/src/user.js index 6abb142547..89e88f490b 100644 --- a/src/user.js +++ b/src/user.js @@ -429,5 +429,28 @@ var bcrypt = require('bcryptjs'), groups.isMemberByGroupName(uid, 'administrators', callback); }; + User.isOnline = function(uid, callback) { + User.getUserField(uid, 'status', function(err, status) { + if(err) { + return callback(err); + } + + var online = require('./socket.io').isUserOnline(uid); + + status = online ? (status || 'online') : 'offline'; + + if(status === 'offline') { + online = false; + } + + callback(null, { + online: online, + uid: uid, + timestamp: Date.now(), + status: status + }); + }); + }; + }(exports));