From 1df50ff855c4b9d2bc631ca9ea71066a7740dcfc Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Wed, 11 Sep 2013 15:41:20 -0400 Subject: [PATCH] updated topic viewing so that markAsRead marks any relevant notifications read (issue #219) --- src/topics.js | 9 +++++++++ src/user.js | 12 ++++++++++++ 2 files changed, 21 insertions(+) diff --git a/src/topics.js b/src/topics.js index 88cadc7045..e8aa3ea557 100644 --- a/src/topics.js +++ b/src/topics.js @@ -7,6 +7,7 @@ var RDB = require('./redis.js') posts = require('./posts.js'), threadTools = require('./threadTools.js'), postTools = require('./postTools'), + Notifications = require('./notifications'), async = require('async'), feed = require('./feed.js'), favourites = require('./favourites.js'), @@ -511,6 +512,14 @@ var RDB = require('./redis.js') } }); }); + + user.notifications.getUnreadByUniqueId(uid, 'topic:' + tid, function(err, nids) { + if (nids.length > 0) { + async.each(nids, function(nid, next) { + Notifications.mark_read(nid, uid, next); + }); + } + }); } Topics.hasReadTopics = function(tids, uid, callback) { diff --git a/src/user.js b/src/user.js index d7875ea5b5..ad580ad0ba 100644 --- a/src/user.js +++ b/src/user.js @@ -985,6 +985,18 @@ var utils = require('./../public/src/utils.js'), }, getUnreadCount: function(uid, callback) { RDB.zcount('uid:' + uid + ':notifications:unread', 0, 10, callback); + }, + getUnreadByUniqueId: function(uid, uniqueId, callback) { + RDB.zrange('uid:' + uid + ':notifications:unread', 0, -1, function(err, nids) { + async.filter(nids, function(nid, next) { + notifications.get(nid, function(notifObj) { + if (notifObj.uniqueId === uniqueId) next(true); + else next(false); + }); + }, function(nids) { + callback(null, nids); + }); + }); } } }(exports));