feat: if an incoming remote message is too long, don't create the room, but notify the local recipients instead

closes #13174
This commit is contained in:
Julian Lam
2025-03-07 15:26:00 -05:00
parent 2f9576556e
commit 885b83e509
2 changed files with 16 additions and 0 deletions

View File

@@ -9,6 +9,7 @@ const meta = require('../meta');
const privileges = require('../privileges');
const categories = require('../categories');
const messaging = require('../messaging');
const notifications = require('../notifications');
const user = require('../user');
const topics = require('../topics');
const posts = require('../posts');
@@ -288,6 +289,20 @@ Notes.assertPrivate = async (object) => {
const payload = await activitypub.mocks.message(object);
try {
await messaging.checkContent(payload.content, false);
} catch (e) {
const { displayname, userslug } = await user.getUserFields(payload.uid, ['displayname', 'userslug']);
const notification = await notifications.create({
bodyShort: `[[error:remote-chat-received-too-long, ${displayname}]]`,
path: `/user/${userslug}`,
nid: `error:chat:uid:${payload.uid}`,
from: payload.uid,
});
notifications.push(notification, Array.from(recipients).filter(uid => utils.isNumber(uid)));
return null;
}
if (!roomId) {
roomId = await messaging.newRoom(payload.uid, { uids: [...recipients] });
}