feat: notify users on new message from remote users, fix use of parseInt in generating chat notification

re: #12834
This commit is contained in:
Julian Lam
2024-10-09 13:46:51 -04:00
parent e9a27db29d
commit 2464d13cde
2 changed files with 3 additions and 4 deletions

View File

@@ -259,7 +259,7 @@ Notes.assertPrivate = async (object) => {
} }
// Add message to room // Add message to room
await messaging.sendMessage({ const message = await messaging.sendMessage({
mid: object.id, mid: object.id,
uid: object.attributedTo, uid: object.attributedTo,
roomId: roomId, roomId: roomId,
@@ -268,6 +268,7 @@ Notes.assertPrivate = async (object) => {
timestamp: Date.now(), timestamp: Date.now(),
// ip: caller.ip, // ip: caller.ip,
}); });
messaging.notifyUsersInRoom(object.attributedTo, roomId, message);
// Set real timestamp back so that the message shows even though it predates room joining // Set real timestamp back so that the message shows even though it predates room joining
await messaging.setMessageField(object.id, 'timestamp', timestamp); await messaging.setMessageField(object.id, 'timestamp', timestamp);

View File

@@ -90,8 +90,6 @@ module.exports = function (Messaging) {
}; };
async function sendNotification(fromUid, roomId, messageObj) { async function sendNotification(fromUid, roomId, messageObj) {
fromUid = parseInt(fromUid, 10);
const [settings, roomData, realtimeUids] = await Promise.all([ const [settings, roomData, realtimeUids] = await Promise.all([
db.getObject(`chat:room:${roomId}:notification:settings`), db.getObject(`chat:room:${roomId}:notification:settings`),
Messaging.getRoomData(roomId), Messaging.getRoomData(roomId),
@@ -104,7 +102,7 @@ module.exports = function (Messaging) {
uids = uids.filter( uids = uids.filter(
uid => utils.isNumber(uid) && uid => utils.isNumber(uid) &&
(parseInt((settings && settings[uid]) || roomDefault, 10) === ALLMESSAGES) && (parseInt((settings && settings[uid]) || roomDefault, 10) === ALLMESSAGES) &&
fromUid !== parseInt(uid, 10) && String(fromUid) !== String(uid) &&
!realtimeUids.includes(parseInt(uid, 10)) !realtimeUids.includes(parseInt(uid, 10))
); );
const hasRead = await Messaging.hasRead(uids, roomId); const hasRead = await Messaging.hasRead(uids, roomId);