From 43b012b32e428924bb0abe48a2b35505f87393a0 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Thu, 5 Dec 2013 12:20:56 -0500 Subject: [PATCH] defactored getUnreadTopics into separate getUnreadTids method -- for no reason, mind you --- src/topics.js | 113 +++++++++++++++++++++++++++----------------------- 1 file changed, 60 insertions(+), 53 deletions(-) diff --git a/src/topics.js b/src/topics.js index 01b36c6136..9182f374c7 100644 --- a/src/topics.js +++ b/src/topics.js @@ -304,8 +304,52 @@ var async = require('async'), ); }; - Topics.getUnreadTopics = function(uid, start, stop, callback) { + Topics.getUnreadTids = function(uid, start, stop, callback) { + var unreadTids = [], + done = false; + + function continueCondition() { + return unreadTids.length < 20 && !done; + } + async.whilst(continueCondition, function(callback) { + RDB.zrevrange('topics:recent', start, stop, function(err, tids) { + if (err) { + return callback(err); + } + + if (tids && !tids.length) { + done = true; + return callback(null); + } + + if (uid === 0) { + unreadTids.push.apply(unreadTids, tids); + callback(null); + } else { + Topics.hasReadTopics(tids, uid, function(read) { + + var newtids = tids.filter(function(tid, index, self) { + return parseInt(read[index], 10) === 0; + }); + + unreadTids.push.apply(unreadTids, newtids); + + if(continueCondition()) { + start = stop + 1; + stop = start + 19; + } + + callback(null); + }); + } + }); + }, function(err) { + callback(err, unreadTids); + }); + }; + + Topics.getUnreadTopics = function(uid, start, stop, callback) { var unreadTopics = { 'category_name': 'Unread', 'show_sidebar': 'hidden', @@ -326,66 +370,29 @@ var async = require('async'), Topics.getTopicsByTids(topicIds, uid, function(topicData) { unreadTopics.topics = topicData; unreadTopics.nextStart = start + topicIds.length; - if (!topicData || topicData.length === 0) + if (!topicData || topicData.length === 0) { unreadTopics.no_topics_message = 'show'; - if (uid === 0 || topicData.length === 0) + } + if (uid === 0 || topicData.length === 0) { unreadTopics.show_markallread_button = 'hidden'; + } + callback(unreadTopics); }); } - var unreadTids = [], - done = false; - - function continueCondition() { - return unreadTids.length < 20 && !done; - } - - async.whilst( - continueCondition, - function(callback) { - RDB.zrevrange('topics:recent', start, stop, function(err, tids) { - if (err) - return callback(err); - - if (tids && !tids.length) { - done = true; - return callback(null); - } - - if (uid === 0) { - unreadTids.push.apply(unreadTids, tids); - callback(null); - } else { - Topics.hasReadTopics(tids, uid, function(read) { - - var newtids = tids.filter(function(tid, index, self) { - return parseInt(read[index], 10) === 0; - }); - - unreadTids.push.apply(unreadTids, newtids); - - if(continueCondition()) { - start = stop + 1; - stop = start + 19; - } - - callback(null); - }); - } - }); - }, - function(err) { - if (err) - return callback([]); - if (unreadTids.length) - sendUnreadTopics(unreadTids); - else - noUnreadTopics(); + Topics.getUnreadTids(uid, start, stop, function(err, unreadTids) { + if (err) { + return callback([]); + } + if (unreadTids.length) { + sendUnreadTopics(unreadTids); + } else { + noUnreadTopics(); } - ); - } + }); + }; Topics.getTopicsByTids = function(tids, current_user, callback, category_id) {