mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-01 11:35:55 +01:00
fix: suppress chat message notifications for users who are known to be in the chat room (uid is present in the corresponding socket.io room)
This commit is contained in:
@@ -84,7 +84,7 @@ module.exports = function (Messaging) {
|
|||||||
Messaging.getRoomData(roomId),
|
Messaging.getRoomData(roomId),
|
||||||
]);
|
]);
|
||||||
const roomDefault = roomData.notificationSetting;
|
const roomDefault = roomData.notificationSetting;
|
||||||
const uidsToNotify = [];
|
let uidsToNotify = [];
|
||||||
const { ALLMESSAGES } = Messaging.notificationSettings;
|
const { ALLMESSAGES } = Messaging.notificationSettings;
|
||||||
await batch.processSortedSet(`chat:room:${roomId}:uids:online`, async (uids) => {
|
await batch.processSortedSet(`chat:room:${roomId}:uids:online`, async (uids) => {
|
||||||
uids = uids.filter(
|
uids = uids.filter(
|
||||||
@@ -99,6 +99,10 @@ module.exports = function (Messaging) {
|
|||||||
interval: 100,
|
interval: 100,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Suppress notifications for users who are literally present in the room
|
||||||
|
const realtimeUids = await io.getUidsInRoom(`chat_room_${roomId}`);
|
||||||
|
uidsToNotify = uidsToNotify.filter(uid => !realtimeUids.includes(parseInt(uid, 10)));
|
||||||
|
|
||||||
if (uidsToNotify.length) {
|
if (uidsToNotify.length) {
|
||||||
const { displayname } = messageObj.fromUser;
|
const { displayname } = messageObj.fromUser;
|
||||||
const isGroupChat = await Messaging.isGroupChat(roomId);
|
const isGroupChat = await Messaging.isGroupChat(roomId);
|
||||||
|
|||||||
Reference in New Issue
Block a user