v1.18.x
Julian Lam 11 years ago
parent 086ebb7e5a
commit 91ce3634fc

@ -2,9 +2,12 @@
var db = require('./database'),
async = require('async'),
winston = require('winston'),
user = require('./user'),
plugins = require('./plugins'),
meta = require('./meta');
meta = require('./meta'),
notifications = require('./notifications'),
userNotifications = require('./user/notifications');
(function(Messaging) {
@ -33,12 +36,6 @@ var db = require('./database'),
return callback(err);
}
/*
TODO: Here I'd check the score of the previous message in this chat's sorted set.
but unfortunately, chats are stored as a list. Once nodebb/nodebb#1902 is resolved,
I can finish it up here.
*/
db.setObject('message:' + mid, message, function(err) {
if (err) {
return callback(err);
@ -99,6 +96,15 @@ var db = require('./database'),
getMessages(mids, fromuid, touid, isNew, callback);
});
// Mark any chat notifications pertaining to this chat as read
notifications.mark_read_by_uniqueid(fromuid, 'chat_' + touid + '_' + fromuid, function(err) {
if (err) {
winston.error('[messaging] Could not mark notifications related to this chat as read: ' + err.message);
}
userNotifications.pushCount(fromuid);
});
};
function getMessages(mids, fromuid, touid, isNew, callback) {

@ -289,6 +289,27 @@ var async = require('async'),
});
};
// why_are_we_using_underscores_here_?
// maybe_camel_case_ALL_THE_THINGS
Notifications.mark_read_by_uniqueid = function(uid, uniqueId, callback) {
async.waterfall([
async.apply(db.getSortedSetRange, 'uid:' + uid + ':notifications:unread', 0, 10),
function(nids, next) {
async.filter(nids, function(nid, next) {
db.getObjectField('notifications:' + nid, 'uniqueId', function(err, value) {
next(uniqueId === value);
});
}, function(nids) {
next(null, nids);
});
},
function(nids, next) {
console.log('matches:', nids);
Notifications.mark_read_multiple(nids, uid, next);
}
], callback);
};
Notifications.prune = function(cutoff) {
var start = process.hrtime();

@ -229,7 +229,7 @@ function sendChatNotification(fromuid, touid, messageObj) {
bodyShort: '[[notifications:new_message_from, ' + messageObj.fromUser.username + ']]',
bodyLong: messageObj.content,
path: nconf.get('relative_path') + '/chats/' + utils.slugify(messageObj.fromUser.username),
uniqueId: 'notification_' + fromuid + '_' + touid,
uniqueId: 'chat_' + fromuid + '_' + touid,
from: fromuid
}, function(nid) {
notifications.push(nid, [touid]);

Loading…
Cancel
Save