mark chat room notifs read on load

This commit is contained in:
Barış Soner Uşaklı
2023-07-21 16:19:26 -04:00
parent 2792d77104
commit 4f3f9d9891
5 changed files with 22 additions and 29 deletions

View File

@@ -5,6 +5,7 @@ const winston = require('winston');
const batch = require('../batch');
const db = require('../database');
const notifications = require('../notifications');
const user = require('../user');
const io = require('../socket.io');
const plugins = require('../plugins');
const meta = require('../meta');
@@ -29,6 +30,17 @@ module.exports = function (Messaging) {
return uids.map(uid => parseInt(settings[uid] || roomData.notificationSetting, 10));
};
Messaging.markRoomNotificationsRead = async (uid, roomId) => {
const chatNids = await db.getSortedSetScan({
key: `uid:${uid}:notifications:unread`,
match: `chat_${roomId}_*`,
});
if (chatNids.length) {
await notifications.markReadMultiple(chatNids, uid);
await user.notifications.pushCount(uid);
}
};
Messaging.notifyUsersInRoom = async (fromUid, roomId, messageObj) => {
const isPublic = parseInt(await db.getObjectField(`chat:room:${roomId}`, 'public'), 10) === 1;
@@ -114,7 +126,7 @@ module.exports = function (Messaging) {
subject: `[[email:notif.chat.subject, ${displayname}]]`,
bodyShort: `[[notifications:new_message_from, ${displayname}]]`,
bodyLong: messageObj.content,
nid: `chat_${fromUid}_${roomId}`,
nid: `chat_${roomId}_${fromUid}`,
from: fromUid,
path: `/chats/${messageObj.roomId}`,
});