diff --git a/public/src/forum/users.js b/public/src/forum/users.js index f4e9ff988d..3021ad36dc 100644 --- a/public/src/forum/users.js +++ b/public/src/forum/users.js @@ -81,19 +81,28 @@ define(function() { }); socket.on('user.isOnline', function(err, data) { - if(getActiveSection().indexOf('online') === 0 && !loadingMoreUsers) { + var section = getActiveSection(); + if((section.indexOf('online') === 0 || section.indexOf('users') === 0) && !loadingMoreUsers) { startLoading('users:online', 0, true); - socket.emit('user.getOnlineAnonCount', {} , function(err, anonCount) { - if(parseInt(anonCount, 10) > 0) { - $('#users-container .anon-user').removeClass('hide'); - $('#online_anon_count').html(anonCount); - } else { - $('#users-container .anon-user').addClass('hide'); - } - }); + updateAnonCount(); } }); + socket.on('user.anonDisconnect', updateAnonCount); + socket.on('user.anonConnect', updateAnonCount) + + function updateAnonCount() { + socket.emit('user.getOnlineAnonCount', {} , function(err, anonCount) { + + if(parseInt(anonCount, 10) > 0) { + $('#users-container .anon-user').removeClass('hide'); + $('#online_anon_count').html(anonCount); + } else { + $('#users-container .anon-user').addClass('hide'); + } + }); + } + function onUsersLoaded(users, emptyContainer) { var html = templates.prepare(templates['users'].blocks['users']).parse({ users: users diff --git a/public/templates/topic.tpl b/public/templates/topic.tpl index 1643fc76f1..f47a76403a 100644 --- a/public/templates/topic.tpl +++ b/public/templates/topic.tpl @@ -54,7 +54,7 @@
diff --git a/src/socket.io/admin.js b/src/socket.io/admin.js index b4f292af19..b2f6b73742 100644 --- a/src/socket.io/admin.js +++ b/src/socket.io/admin.js @@ -64,11 +64,12 @@ SocketAdmin.user.createUser = function(socket, user, callback) { SocketAdmin.user.banUser = function(socket, theirid) { admin.user.banUser(socket.uid, theirid, socket, function(isBanned) { if(isBanned) { - if(index.userSockets[theirid]) { - for(var i=0; i 0; + return Sockets.getUserSockets(uid).length > 0; } Sockets.updateRoomBrowsingText = updateRoomBrowsingText; @@ -292,11 +299,8 @@ function emitTopicPostStats(callback) { Sockets.emitOnlineUserCount = emitOnlineUserCount; function emitOnlineUserCount(callback) { - var anon = Sockets.userSockets[0] ? Sockets.userSockets[0].length : 0; - var registered = Object.keys(Sockets.userSockets).length; - if (anon) { - registered = registered - 1; - } + var anon = Sockets.getOnlineAnonCount(0); + var registered = Sockets.getConnectedClients().length; var returnObj = { users: registered + anon, diff --git a/src/socket.io/modules.js b/src/socket.io/modules.js index 4a89b32ff4..4d7e8f53d5 100644 --- a/src/socket.io/modules.js +++ b/src/socket.io/modules.js @@ -113,39 +113,29 @@ SocketModules.chats.send = function(socket, data) { usersData[0].uid = socket.uid; usersData[1].uid = touid; - Messaging.parse(msg, socket.uid, socket.uid, usersData[1], usersData[0], true, function(parsed) { - Messaging.addMessage(socket.uid, touid, msg, function(err, message) { - var numSockets = 0, - x; - - if (server.userSockets[touid]) { - numSockets = server.userSockets[touid].length; - - for (x = 0; x < numSockets; ++x) { - server.userSockets[touid][x].emit('event:chats.receive', { - fromuid: socket.uid, - username: username, - message: parsed, - timestamp: Date.now() - }); - } - } - - if (server.userSockets[socket.uid]) { - - numSockets = server.userSockets[socket.uid].length; - - for (x = 0; x < numSockets; ++x) { - server.userSockets[socket.uid][x].emit('event:chats.receive', { - fromuid: touid, - username: toUsername, - message: parsed, - timestamp: Date.now() - }); - } - } - }); - }); + Messaging.parse(msg, socket.uid, socket.uid, usersData[1], usersData[0], true, function(parsed) { + Messaging.addMessage(socket.uid, touid, msg, function(err, message) { + + + server.getUserSockets(touid).forEach(function(s) { + s.emit('event:chats.receive', { + fromuid: socket.uid, + username: username, + message: parsed, + timestamp: Date.now() + }); + }); + + server.getUserSockets(socket.uid).forEach(function(s) { + s.emit('event:chats.receive', { + fromuid: touid, + username: toUsername, + message: parsed, + timestamp: Date.now() + }); + }); + }); + }); }); }; diff --git a/src/topics.js b/src/topics.js index 653ffb2fc3..479c4401a4 100644 --- a/src/topics.js +++ b/src/topics.js @@ -647,8 +647,7 @@ var async = require('async'), var websockets = require('./socket.io'); if (!uids) { - clients = websockets.getConnectedClients(); - uids = Object.keys(clients); + uids = websockets.getConnectedClients(); } else if (!Array.isArray(uids)) { uids = [uids]; }