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/lib/client/methods/sendMessage.js

40 lines
1.3 KiB

import { Meteor } from 'meteor/meteor';
import { TimeSync } from 'meteor/mizzao:timesync';
import s from 'underscore.string';
import toastr from 'toastr';
import { ChatMessage } from '../../../models';
import { settings } from '../../../settings';
import { callbacks } from '../../../callbacks';
import { promises } from '../../../promises/client';
import { t } from '../../../utils/client';
Meteor.methods({
sendMessage(message) {
if (!Meteor.userId() || s.trim(message.msg) === '') {
return false;
}
const messageAlreadyExists = message._id && ChatMessage.findOne({ _id: message._id });
if (messageAlreadyExists) {
return toastr.error(t('Message_Already_Sent'));
}
const user = Meteor.user();
message.ts = isNaN(TimeSync.serverOffset()) ? new Date() : new Date(Date.now() + TimeSync.serverOffset());
message.u = {
_id: Meteor.userId(),
username: user.username,
};
if (settings.get('UI_Use_Real_Name')) {
message.u.name = user.name;
}
message.temp = true;
if (settings.get('Message_Read_Receipt_Enabled')) {
message.unread = true;
}
message = callbacks.run('beforeSaveMessage', message);
promises.run('onClientMessageReceived', message).then(function(message) {
ChatMessage.insert(message);
return callbacks.run('afterSaveMessage', message);
});
},
});