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));