diff --git a/packages/rocketchat-lib/server/lib/sendNotificationsOnMessage.js b/packages/rocketchat-lib/server/lib/sendNotificationsOnMessage.js index 966ec4f277e3d..1f33a449b8260 100644 --- a/packages/rocketchat-lib/server/lib/sendNotificationsOnMessage.js +++ b/packages/rocketchat-lib/server/lib/sendNotificationsOnMessage.js @@ -29,7 +29,7 @@ const sendNotification = ({ } // dont send notification to users who ignored the sender - if (Array.isArray(subscription.ignored) && subscription.ignored.find(sender._id)) { + if (Array.isArray(subscription.ignored) && subscription.ignored.includes(sender._id)) { return; } @@ -199,11 +199,15 @@ function sendAllNotifications(message, room) { [notificationField]: 'mentions', 'u._id': { $in: mentionIdsWithoutGroups } }); + } else if (!disableAllMessageNotifications && (hasMentionToAll || hasMentionToHere)) { + query.$or.push({ + [notificationField]: 'mentions' + }); } const serverField = kind === 'email' ? 'emailNotificationMode' : `${ kind }Notifications`; const serverPreference = RocketChat.settings.get(`Accounts_Default_User_Preferences_${ serverField }`); - if ((room.t === 'd' && serverPreference === 'mentions') || (serverPreference === 'all' && !disableAllMessageNotifications)) { + if ((room.t === 'd' && serverPreference !== 'nothing') || (!disableAllMessageNotifications && (serverPreference === 'all' || hasMentionToAll || hasMentionToHere))) { query.$or.push({ [notificationField]: { $exists: false } }); diff --git a/packages/rocketchat-push-notifications/server/models/Subscriptions.js b/packages/rocketchat-push-notifications/server/models/Subscriptions.js index 7e051dc881656..3caaf666b56c9 100644 --- a/packages/rocketchat-push-notifications/server/models/Subscriptions.js +++ b/packages/rocketchat-push-notifications/server/models/Subscriptions.js @@ -235,6 +235,7 @@ RocketChat.models.Subscriptions.findNotificationPreferencesByRoom = function(que code: 1, // fields to define if should send a notification + ignored: 1, audioNotifications: 1, audioNotificationValue: 1, desktopNotificationDuration: 1,