diff --git a/src/activitypub/notes.js b/src/activitypub/notes.js index 8b77491814..2b443c0e22 100644 --- a/src/activitypub/notes.js +++ b/src/activitypub/notes.js @@ -259,7 +259,7 @@ Notes.assertPrivate = async (object) => { } // Add message to room - await messaging.sendMessage({ + const message = await messaging.sendMessage({ mid: object.id, uid: object.attributedTo, roomId: roomId, @@ -268,6 +268,7 @@ Notes.assertPrivate = async (object) => { timestamp: Date.now(), // ip: caller.ip, }); + messaging.notifyUsersInRoom(object.attributedTo, roomId, message); // Set real timestamp back so that the message shows even though it predates room joining await messaging.setMessageField(object.id, 'timestamp', timestamp); diff --git a/src/messaging/notifications.js b/src/messaging/notifications.js index 87b9a78dc4..3a9d56c76f 100644 --- a/src/messaging/notifications.js +++ b/src/messaging/notifications.js @@ -90,8 +90,6 @@ module.exports = function (Messaging) { }; async function sendNotification(fromUid, roomId, messageObj) { - fromUid = parseInt(fromUid, 10); - const [settings, roomData, realtimeUids] = await Promise.all([ db.getObject(`chat:room:${roomId}:notification:settings`), Messaging.getRoomData(roomId), @@ -104,7 +102,7 @@ module.exports = function (Messaging) { uids = uids.filter( uid => utils.isNumber(uid) && (parseInt((settings && settings[uid]) || roomDefault, 10) === ALLMESSAGES) && - fromUid !== parseInt(uid, 10) && + String(fromUid) !== String(uid) && !realtimeUids.includes(parseInt(uid, 10)) ); const hasRead = await Messaging.hasRead(uids, roomId);