mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-01 11:35:55 +01:00
fixed #1904
This commit is contained in:
@@ -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]);
|
||||
|
||||
Reference in New Issue
Block a user