This commit is contained in:
Julian Lam
2016-03-01 16:13:01 -05:00
parent 2b448a0f76
commit 3c7a42c959
2 changed files with 80 additions and 3 deletions

View File

@@ -208,8 +208,30 @@ var async = require('async'),
if (!parseInt(uid, 10)) {
return callback(null, 0);
}
db.getSortedSetRevRange('uid:' + uid + ':notifications:unread', 0, 99, function(err, nids) {
callback(err, Array.isArray(nids) ? nids.length : 0);
// Collapse any notifications with identical mergeIds
async.waterfall([
async.apply(db.getSortedSetRevRange, 'uid:' + uid + ':notifications:unread', 0, 99),
function(nids, next) {
var keys = nids.map(function(nid) {
return 'notifications:' + nid;
});
db.getObjectsFields(keys, ['mergeId'], next);
}
], function(err, mergeIds) {
// A missing (null) mergeId means that notification is counted separately.
mergeIds = mergeIds.map(function(set) {
return set.mergeId;
});
callback(err, mergeIds.reduce(function(count, cur, idx, arr) {
if (cur === null || idx === arr.indexOf(cur)) {
++count;
}
return count;
}, 0));
});
};