diff --git a/src/topics.js b/src/topics.js index ea9ac41830..4fe894145b 100644 --- a/src/topics.js +++ b/src/topics.js @@ -131,6 +131,14 @@ var social = require('./social'); hasRead: function(next) { Topics.hasReadTopics(tids, uid, next); }, + bookmarks: function(next) { + if (!parseInt(uid, 10)) { + return next(null, tids.map(function() { + return null; + })); + } + Topics.getUserBookmarks(tids, uid, next); + }, teasers: function(next) { Topics.getTeasers(topics, next); }, @@ -155,6 +163,7 @@ var social = require('./social'); topics[i].locked = parseInt(topics[i].locked, 10) === 1; topics[i].deleted = parseInt(topics[i].deleted, 10) === 1; topics[i].unread = !results.hasRead[i]; + topics[i].bookmark = results.bookmarks[i]; topics[i].unreplied = !topics[i].teaser; } } @@ -292,6 +301,12 @@ var social = require('./social'); db.sortedSetScore('tid:' + tid + ':bookmarks', uid, callback); }; + Topics.getUserBookmarks = function(tids, uid, callback) { + db.sortedSetsScore(tids.map(function(tid) { + return 'tid:' + tid + ':bookmarks'; + }), uid, callback); + }; + Topics.setUserBookmark = function(tid, uid, index, callback) { db.sortedSetAdd('tid:' + tid + ':bookmarks', index, uid, callback); };