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/app/message-snippet/server/methods/snippetMessage.js

54 lines
1.7 KiB

import { Meteor } from 'meteor/meteor';
import { Subscriptions, Messages, Users, Rooms } from '../../../models';
import { settings } from '../../../settings';
import { callbacks } from '../../../callbacks';
import { isTheLastMessage } from '../../../lib';
Meteor.methods({
snippetMessage(message, filename) {
if (Meteor.userId() == null) {
// noinspection JSUnresolvedFunction
throw new Meteor.Error('error-invalid-user', 'Invalid user',
{ method: 'snippetMessage' });
}
const room = Rooms.findOne({ _id: message.rid });
if ((typeof room === 'undefined') || (room === null)) {
return false;
}
const subscription = Subscriptions.findOneByRoomIdAndUserId(message.rid, Meteor.userId(), { fields: { _id: 1 } });
if (!subscription) {
return false;
}
const me = Users.findOneById(Meteor.userId());
// If we keep history of edits, insert a new message to store history information
if (settings.get('Message_KeepHistory')) {
Messages.cloneAndSaveAsHistoryById(message._id, me);
}
message.snippeted = true;
message.snippetedAt = Date.now;
message.snippetedBy = {
_id: Meteor.userId(),
username: me.username,
};
message = callbacks.run('beforeSaveMessage', message);
// Create the SnippetMessage
Messages.setSnippetedByIdAndUserId(message, filename, message.snippetedBy,
message.snippeted, Date.now, filename);
if (isTheLastMessage(room, message)) {
Rooms.setLastMessageSnippeted(room._id, message, filename, message.snippetedBy,
message.snippeted, Date.now, filename);
}
Messages.createWithTypeRoomIdMessageAndUser(
'message_snippeted', message.rid, '', me, { snippetId: message._id, snippetName: filename });
},
});