From 7a1888dfbfc0b396e51828d68a4cae62ad222572 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Wed, 30 May 2018 16:29:40 -0400 Subject: [PATCH] closes #6514 --- src/messaging/create.js | 5 ++++- src/messaging/notifications.js | 6 +----- src/notifications.js | 11 ++--------- src/user/blocks.js | 8 ++++++++ 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/messaging/create.js b/src/messaging/create.js index 6f355a9ff8..252989e5c7 100644 --- a/src/messaging/create.js +++ b/src/messaging/create.js @@ -5,7 +5,7 @@ var async = require('async'); var meta = require('../meta'); var plugins = require('../plugins'); var db = require('../database'); - +var user = require('../user'); module.exports = function (Messaging) { Messaging.sendMessage = function (uid, roomId, content, timestamp, callback) { @@ -73,6 +73,9 @@ module.exports = function (Messaging) { isNewSet = _isNewSet; db.getSortedSetRange('chat:room:' + roomId + ':uids', 0, -1, next); }, + function (uids, next) { + user.blocks.filterUids(fromuid, uids, next); + }, function (uids, next) { async.parallel([ async.apply(Messaging.addRoomToUsers, roomId, uids, timestamp), diff --git a/src/messaging/notifications.js b/src/messaging/notifications.js index 8dd01a14fe..340ddcf356 100644 --- a/src/messaging/notifications.js +++ b/src/messaging/notifications.js @@ -18,11 +18,7 @@ module.exports = function (Messaging) { Messaging.getUidsInRoom(roomId, 0, -1, next); }, function (uids, next) { - async.filter(uids, function (uid, next) { - user.blocks.is(fromUid, uid, function (err, blocked) { - next(err, !blocked); - }); - }, next); + user.blocks.filterUids(fromUid, uids, next); }, function (uids, next) { var data = { diff --git a/src/notifications.js b/src/notifications.js index 30089a2d1d..32adb67fe3 100644 --- a/src/notifications.js +++ b/src/notifications.js @@ -286,16 +286,9 @@ function pushToUids(uids, notification, callback) { async.waterfall([ function (next) { // Remove uid from recipients list if they have blocked the user triggering the notification - async.filter(uids, function (uid, next) { - User.blocks.is(notification.from, uid, function (err, blocked) { - next(err, !blocked); - }); - }, function (err, _uids) { - uids = _uids; - next(err); - }); + User.blocks.filterUids(notification.from, uids, next); }, - function (next) { + function (uids, next) { plugins.fireHook('filter:notification.push', { notification: notification, uids: uids }, next); }, function (data, next) { diff --git a/src/user/blocks.js b/src/user/blocks.js index 5fd8977874..75767e4a12 100644 --- a/src/user/blocks.js +++ b/src/user/blocks.js @@ -76,6 +76,14 @@ module.exports = function (User) { }); }; + User.blocks.filterUids = function (targetUid, uids, callback) { + async.filter(uids, function (uid, next) { + User.blocks.is(targetUid, uid, function (err, blocked) { + next(err, !blocked); + }); + }, callback); + }; + User.blocks.filter = function (uid, property, set, callback) { // Given whatever is passed in, iterates through it, and removes entries made by blocked uids // property is optional