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.4 KiB

import { Meteor } from 'meteor/meteor';
import { TimeSync } from 'meteor/mizzao:timesync';
import s from 'underscore.string';
import { ChatMessage } from '../../../models';
import { settings } from '../../../settings';
import { callbacks } from '../../../../lib/callbacks';
import { t } from '../../../utils/client';
import { dispatchToastMessage } from '../../../../client/lib/toast';
import { onClientMessageReceived } from '../../../../client/lib/onClientMessageReceived';
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 dispatchToastMessage({ type: 'error', message: 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);
onClientMessageReceived(message).then(function (message) {
ChatMessage.insert(message);
return callbacks.run('afterSaveMessage', message);
});
},
});