From cdd5bb5a6e1fb29f5511391b95120a33a6c50817 Mon Sep 17 00:00:00 2001 From: barisusakli Date: Wed, 23 Sep 2015 17:08:37 -0400 Subject: [PATCH] fix acp high presence topics --- src/socket.io/meta.js | 34 +++++++++++++--------------------- 1 file changed, 13 insertions(+), 21 deletions(-) diff --git a/src/socket.io/meta.js b/src/socket.io/meta.js index abe8d461d0..f56fc11016 100644 --- a/src/socket.io/meta.js +++ b/src/socket.io/meta.js @@ -93,8 +93,7 @@ SocketMeta.rooms.getAll = function(socket, data, callback) { topics: {} }; - var scores = {}, - topTenTopics = [], + var topTenTopics = [], tid; for (var room in roomClients) { @@ -104,34 +103,29 @@ SocketMeta.rooms.getAll = function(socket, data, callback) { var length = roomClients[room].length; socketData.users.topics += length; - if (scores[length]) { - scores[length].push(tid[1]); - } else { - scores[length] = [tid[1]]; - } + topTenTopics.push({tid: tid[1], count: length}); } else if (room.match(/^category/)) { socketData.users.category += roomClients[room].length; } } } - var scoreKeys = Object.keys(scores), - mostActive = scoreKeys.sort(); + topTenTopics = topTenTopics.sort(function(a, b) { + return b.count - a.count; + }).slice(0, 10); - while(topTenTopics.length < 10 && mostActive.length > 0) { - topTenTopics = topTenTopics.concat(scores[mostActive.pop()]); - } - - topTenTopics = topTenTopics.slice(0, 10); + var topTenTids = topTenTopics.map(function(topic) { + return topic.tid; + }); - topics.getTopicsFields(topTenTopics, ['title'], function(err, titles) { + topics.getTopicsFields(topTenTids, ['title'], function(err, titles) { if (err) { return callback(err); } - topTenTopics.forEach(function(tid, id) { - socketData.topics[tid] = { - value: Array.isArray(roomClients['topic_' + tid]) ? roomClients['topic_' + tid].length : 0, - title: validator.escape(titles[id].title) + topTenTopics.forEach(function(topic, index) { + socketData.topics[topic.tid] = { + value: topic.count || 0, + title: validator.escape(titles[index].title) }; }); @@ -140,6 +134,4 @@ SocketMeta.rooms.getAll = function(socket, data, callback) { }; -/* Exports */ - module.exports = SocketMeta;