mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-11 16:35:47 +01:00
@@ -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();
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user