fixed the issue with Topics.markAsRead

v1.18.x
Baris Usakli 12 years ago
parent d7fbe6ee14
commit 6a83bf79b4

@ -267,7 +267,26 @@ var RDB = require('./redis.js'),
});
}
Categories.isTopicsRead = function(cid, uid, callback) {
RDB.smembers('categories:' + cid + ':tid', function(err, tids) {
topics.hasReadTopics(tids, uid, function(hasRead) {
var allread = true;
for (var i=0, ii=tids.length; i<ii; i++) {
if(hasRead[i] === 0) {
allread = false;
break;
}
}
callback(allread);
});
});
}
Categories.markAsRead = function(cid, uid) {
RDB.sadd('cid:' + cid + ':read_by_uid', uid);
}
Categories.hasReadCategories = function(cids, uid, callback) {
var batch = RDB.multi();

@ -218,10 +218,16 @@ marked.setOptions({
}
Topics.markAsRead = function(tid, uid) {
// there is an issue with this fn. if you read a topic that is previously read you will mark the category as read anyways - there is no check
RDB.sadd(schema.topics(tid).read_by_uid, uid);
Topics.get_cid_by_tid(tid, function(cid) {
RDB.sadd('cid:' + cid + ':read_by_uid', uid);
categories.isTopicsRead(cid, uid, function(read) {
if(read) {
categories.markAsRead(cid, uid);
}
});
});
}

Loading…
Cancel
Save