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/packages/assistify-threading/server/hooks/propagateThreadMetadata.js

28 lines
932 B

import { callbacks } from 'meteor/rocketchat:callbacks';
import { Messages, Rooms } from 'meteor/rocketchat:models';
import { deleteRoom } from 'meteor/rocketchat:lib';
/**
* We need to propagate the writing of new message in a thread to the linking
* system message
*/
callbacks.add('afterSaveMessage', function(message, { _id, prid } = {}) {
if (prid) {
Messages.refreshThreadMetadata({ rid: _id }, message);
}
return message;
}, callbacks.priority.LOW, 'PropagateThreadMetadata');
callbacks.add('afterDeleteMessage', function(message, { _id, prid } = {}) {
if (prid) {
Messages.refreshThreadMetadata({ rid: _id }, message);
}
if (message.trid) {
deleteRoom(message.trid);
}
return message;
}, callbacks.priority.LOW, 'PropagateThreadMetadata');
callbacks.add('afterDeleteRoom', function(rid) {
Rooms.find({ prid: rid }, { fields: { _id: 1 } }).forEach(({ _id }) => deleteRoom(_id));
}, 'DeleteThreadChain');