diff --git a/public/src/app.js b/public/src/app.js index 1a176fc481..7b4eeecd50 100644 --- a/public/src/app.js +++ b/public/src/app.js @@ -458,6 +458,13 @@ var socket, }); }; + function updateOnlineStatus(uid) { + socket.emit('user.isOnline', uid, function(err, data) { + $('#logged-in-menu #user_label #user-profile-link>i').attr('class', 'fa fa-circle status-' + data.status); + }); + } + + app.updateHeader = function(err, data) { $('#search-button').off().on('click', function(e) { e.stopPropagation(); @@ -500,11 +507,14 @@ var socket, userLabel.find('img').attr('src', data.picture); } if (data.username) { - userLabel.find('#user-profile-link>span').html(data.username); + userLabel.find('#user-profile-link>span').html(' ' + data.username); } $('#logout-link').on('click', app.logout); } + + updateOnlineStatus(data.uid); + } else { if (allowGuestSearching) { $('#search-button').removeClass("hide").show(); @@ -528,12 +538,14 @@ var socket, } }); - $('#user-control-list .user-status').off('click').on('click', function() { - socket.emit('user.setStatus', $(this).attr('data-status'), function(err) { + $('#user-control-list .user-status').off('click').on('click', function(e) { + socket.emit('user.setStatus', $(this).attr('data-status'), function(err, data) { if(err) { return app.alertError(err.message); } + updateOnlineStatus(data.uid); }); + e.preventDefault(); }); }; diff --git a/src/socket.io/user.js b/src/socket.io/user.js index d927f48e6a..fb4d83d4bc 100644 --- a/src/socket.io/user.js +++ b/src/socket.io/user.js @@ -203,6 +203,7 @@ SocketUser.setStatus = function(socket, status, callback) { user.setUserField(socket.uid, 'status', status, function(err) { SocketUser.isOnline(socket, socket.uid, function(err, data) { server.server.sockets.emit('user.isOnline', err, data); + callback(err, data); }); }); };