v1.18.x
Julian Lam 9 years ago
parent 9f3c1f6641
commit 38ad980456

@ -268,6 +268,23 @@ var utils = require('../public/src/utils');
}); });
}; };
Notifications.rescind = function(nid, callback) {
callback = callback || function() {};
async.parallel([
async.apply(db.sortedSetRemove, 'notifications', nid),
async.apply(db.delete, 'notifications:' + nid)
], function(err) {
if (err) {
winston.error('Encountered error rescinding notification (' + nid + '): ' + err.message);
} else {
winston.verbose('[notifications/rescind] Rescinded notification "' + nid + '"');
}
callback(err, nid);
});
};
Notifications.markRead = function(nid, uid, callback) { Notifications.markRead = function(nid, uid, callback) {
callback = callback || function() {}; callback = callback || function() {};
if (!parseInt(uid, 10) || !nid) { if (!parseInt(uid, 10) || !nid) {

@ -77,7 +77,7 @@ function filterTidCidIgnorers(uids, tid, cid, callback) {
], callback); ], callback);
} }
SocketHelpers.sendNotificationToPostOwner = function(pid, fromuid, notification) { SocketHelpers.sendNotificationToPostOwner = function(pid, fromuid, command, notification) {
if (!pid || !fromuid || !notification) { if (!pid || !fromuid || !notification) {
return; return;
} }
@ -107,7 +107,7 @@ SocketHelpers.sendNotificationToPostOwner = function(pid, fromuid, notification)
bodyLong: results.postObj.content, bodyLong: results.postObj.content,
pid: pid, pid: pid,
path: '/post/' + pid, path: '/post/' + pid,
nid: 'post:' + pid + ':uid:' + fromuid, nid: command + ':post:' + pid + ':uid:' + fromuid,
from: fromuid, from: fromuid,
mergeId: notification + '|' + pid, mergeId: notification + '|' + pid,
topicTitle: results.topicTitle topicTitle: results.topicTitle
@ -124,7 +124,7 @@ SocketHelpers.sendNotificationToPostOwner = function(pid, fromuid, notification)
}; };
SocketHelpers.sendNotificationToTopicOwner = function(tid, fromuid, notification) { SocketHelpers.sendNotificationToTopicOwner = function(tid, fromuid, command, notification) {
if (!tid || !fromuid || !notification) { if (!tid || !fromuid || !notification) {
return; return;
} }
@ -150,7 +150,7 @@ SocketHelpers.sendNotificationToTopicOwner = function(tid, fromuid, notification
notifications.create({ notifications.create({
bodyShort: '[[' + notification + ', ' + results.username + ', ' + titleEscaped + ']]', bodyShort: '[[' + notification + ', ' + results.username + ', ' + titleEscaped + ']]',
path: '/topic/' + results.topicData.slug, path: '/topic/' + results.topicData.slug,
nid: 'tid:' + tid + ':uid:' + fromuid, nid: command + ':tid:' + tid + ':uid:' + fromuid,
from: fromuid from: fromuid
}, next); }, next);
} }
@ -164,6 +164,11 @@ SocketHelpers.sendNotificationToTopicOwner = function(tid, fromuid, notification
}); });
}; };
SocketHelpers.rescindUpvoteNotification = function(pid, fromuid) {
var nid = 'upvote:post:' + pid + ':uid:' + fromuid;
notifications.rescind(nid);
};
SocketHelpers.emitToTopicAndCategory = function(event, data) { SocketHelpers.emitToTopicAndCategory = function(event, data) {
websockets.in('topic_' + data.tid).emit(event, data); websockets.in('topic_' + data.tid).emit(event, data);
websockets.in('category_' + data.cid).emit(event, data); websockets.in('category_' + data.cid).emit(event, data);

@ -152,7 +152,9 @@ module.exports = function(SocketPosts) {
} }
if (result && notification) { if (result && notification) {
socketHelpers.sendNotificationToPostOwner(data.pid, socket.uid, notification); socketHelpers.sendNotificationToPostOwner(data.pid, socket.uid, command, notification);
} else if (result && command === 'unvote') {
socketHelpers.rescindUpvoteNotification(data.pid, socket.uid);
} }
callback(); callback();
}); });

@ -28,7 +28,7 @@ module.exports = function(SocketPosts) {
topics.movePostToTopic(data.pid, data.tid, next); topics.movePostToTopic(data.pid, data.tid, next);
}, },
function (next) { function (next) {
socketHelpers.sendNotificationToPostOwner(data.pid, socket.uid, 'notifications:moved_your_post'); socketHelpers.sendNotificationToPostOwner(data.pid, socket.uid, 'move', 'notifications:moved_your_post');
next(); next();
} }
], callback); ], callback);

@ -40,7 +40,7 @@ module.exports = function(SocketTopics) {
socketHelpers.emitToTopicAndCategory('event:topic_moved', topicData); socketHelpers.emitToTopicAndCategory('event:topic_moved', topicData);
socketHelpers.sendNotificationToTopicOwner(tid, socket.uid, 'notifications:moved_your_topic'); socketHelpers.sendNotificationToTopicOwner(tid, socket.uid, 'move', 'notifications:moved_your_topic');
next(); next();
}); });

Loading…
Cancel
Save