From 52962a7e9bb74e110e66c74ff775ab3085dd97c6 Mon Sep 17 00:00:00 2001 From: Baris Soner Usakli Date: Fri, 31 Jan 2014 15:47:26 -0500 Subject: [PATCH] dont show invisible users in online users page --- public/src/forum/users.js | 10 ++++++---- src/routes/user.js | 18 ++++++++++++------ src/socket.io/user.js | 28 ++++++++++++++++++---------- 3 files changed, 36 insertions(+), 20 deletions(-) diff --git a/public/src/forum/users.js b/public/src/forum/users.js index fcf52e897a..378e786e66 100644 --- a/public/src/forum/users.js +++ b/public/src/forum/users.js @@ -52,8 +52,6 @@ define(function() { return app.alert(err.message); } - console.log(data); - if (!data) { $('#user-notfound-notify').html('You need to be logged in to search!'); $('#user-notfound-notify').parent().addClass('btn-warning label-warning'); @@ -83,7 +81,7 @@ define(function() { }); socket.on('user.isOnline', function(err, data) { - if(getActiveSection() == 'online' && !loadingMoreUsers) { + if(getActiveSection().indexOf('online') === 0 && !loadingMoreUsers) { startLoading('users:online', 0, true); socket.emit('user.getOnlineAnonCount', {} , function(err, anonCount) { if(parseInt(anonCount, 10) > 0) { @@ -100,8 +98,11 @@ define(function() { var html = templates.prepare(templates['users'].blocks['users']).parse({ users: users }); - if(emptyContainer) + + if(emptyContainer) { $('#users-container .registered-user').remove(); + } + $('#users-container').append(html); $('#users-container .anon-user').appendTo($('#users-container')); } @@ -125,6 +126,7 @@ define(function() { function startLoading(set, after, emptyContainer) { loadingMoreUsers = true; + socket.emit('user.loadMore', { set: set, after: after diff --git a/src/routes/user.js b/src/routes/user.js index 7ae12c386b..81ff988168 100644 --- a/src/routes/user.js +++ b/src/routes/user.js @@ -494,13 +494,19 @@ var fs = require('fs'), var onlineUsers = []; - function iterator(user, callback) { - if(websockets.isUserOnline(user.uid)) { - onlineUsers.push(user); - } else { - db.sortedSetRemove('users:online', user.uid); + data = data.filter(function(item) { + return item.status !== 'offline'; + }); + + function iterator(userData, next) { + var online = websockets.isUserOnline(userData.uid); + if(!online) { + db.sortedSetRemove('users:online', userData.uid); + return next(null); } - callback(null); + + onlineUsers.push(userData); + next(null); } var anonymousUserCount = websockets.getOnlineAnonCount(); diff --git a/src/socket.io/user.js b/src/socket.io/user.js index aeb1270062..d927f48e6a 100644 --- a/src/socket.io/user.js +++ b/src/socket.io/user.js @@ -174,20 +174,28 @@ SocketUser.getActiveUsers = function(socket, data, callback) { }; SocketUser.loadMore = function(socket, data, callback) { - if(data) { - var start = data.after, - end = start + 19; + if(!data || !data.set || parseInt(data.after, 10) < 0) { + return callback(new Error('invalid-data')); + } - user.getUsers(data.set, start, end, function(err, data) { - if(err) { - return callback(err); - } + var start = data.after, + end = start + 19; - callback(null, { - users: data + user.getUsers(data.set, start, end, function(err, userData) { + if(err) { + return callback(err); + } + + if(data.set === 'users:online') { + userData = userData.filter(function(item) { + return item.status !== 'offline'; }); + } + + callback(null, { + users: userData }); - } + }); }; SocketUser.setStatus = function(socket, status, callback) {