The communications platform that puts data protection first.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
Rocket.Chat/apps/meteor/app/federation/server/hooks/afterSaveMessage.js

38 lines
1.2 KiB

import { FederationRoomEvents } from '@rocket.chat/models';
import { clientLogger } from '../lib/logger';
import { normalizers } from '../normalizers';
import { hasExternalDomain } from '../functions/helpers';
import { getFederationDomain } from '../lib/getFederationDomain';
import { dispatchEvent } from '../handler';
async function afterSaveMessage(message, room) {
// If there are not federated users on this room, ignore it
if (!hasExternalDomain(room)) {
return message;
}
clientLogger.debug({ msg: 'afterSaveMessage', message, room });
let event;
// If editedAt exists, it means it is an update
if (message.editedAt) {
// Create the edit message event
event = await FederationRoomEvents.createEditMessageEvent(getFederationDomain(), room._id, normalizers.normalizeMessage(message));
} else {
// Create the message event
event = await FederationRoomEvents.createMessageEvent(getFederationDomain(), room._id, normalizers.normalizeMessage(message));
}
// Dispatch event (async)
dispatchEvent(room.federation.domains, event);
return message;
}
export const definition = {
hook: 'afterSaveMessage',
callback: afterSaveMessage,
id: 'federation-after-save-message',
};