|
|
@ -4,22 +4,27 @@ RocketChat.sendMessage = function(user, message, room, upsert = false) { |
|
|
|
if (!user || !message || !room._id) { |
|
|
|
if (!user || !message || !room._id) { |
|
|
|
return false; |
|
|
|
return false; |
|
|
|
} |
|
|
|
} |
|
|
|
if (message.ts == null) { |
|
|
|
|
|
|
|
message.ts = new Date(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
message.u = _.pick(user, ['_id', 'username', 'name']); |
|
|
|
|
|
|
|
if (!Match.test(message.msg, String)) { |
|
|
|
if (!Match.test(message.msg, String)) { |
|
|
|
message.msg = ''; |
|
|
|
message.msg = ''; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (message.ts == null) { |
|
|
|
|
|
|
|
message.ts = new Date(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
message.rid = room._id; |
|
|
|
message.rid = room._id; |
|
|
|
|
|
|
|
message.u = _.pick(user, ['_id', 'username', 'name']); |
|
|
|
|
|
|
|
|
|
|
|
if (!room.usernames || room.usernames.length === 0) { |
|
|
|
if (!room.usernames || room.usernames.length === 0) { |
|
|
|
const updated_room = RocketChat.models.Rooms.findOneById(room._id); |
|
|
|
const updated_room = RocketChat.models.Rooms.findOneById(room._id); |
|
|
|
if (updated_room != null) { |
|
|
|
if (updated_room) { |
|
|
|
room = updated_room; |
|
|
|
room = updated_room; |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
room.usernames = []; |
|
|
|
room.usernames = []; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (message.parseUrls !== false) { |
|
|
|
if (message.parseUrls !== false) { |
|
|
|
const urls = message.msg.match(/([A-Za-z]{3,9}):\/\/([-;:&=\+\$,\w]+@{1})?([-A-Za-z0-9\.]+)+:?(\d+)?((\/[-\+=!:~%\/\.@\,\(\)\w]*)?\??([-\+=&!:;%@\/\.\,\w]+)?(?:#([^\s\)]+))?)?/g); |
|
|
|
const urls = message.msg.match(/([A-Za-z]{3,9}):\/\/([-;:&=\+\$,\w]+@{1})?([-A-Za-z0-9\.]+)+:?(\d+)?((\/[-\+=!:~%\/\.@\,\(\)\w]*)?\??([-\+=&!:;%@\/\.\,\w]+)?(?:#([^\s\)]+))?)?/g); |
|
|
|
|
|
|
|
|
|
|
@ -44,6 +49,17 @@ RocketChat.sendMessage = function(user, message, room, upsert = false) { |
|
|
|
sandstormSessionId = message.sandstormSessionId; |
|
|
|
sandstormSessionId = message.sandstormSessionId; |
|
|
|
delete message.sandstormSessionId; |
|
|
|
delete message.sandstormSessionId; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// For the Rocket.Chat Apps :)
|
|
|
|
|
|
|
|
if (Apps && Apps.isLoaded()) { |
|
|
|
|
|
|
|
const prevent = Apps.getBridges().getListenerBridge().messageEvent('IPreMessageSentPrevent', message); |
|
|
|
|
|
|
|
if (prevent) { |
|
|
|
|
|
|
|
return false; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// TODO: The rest of the IPreMessageSent events
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (message._id && upsert) { |
|
|
|
if (message._id && upsert) { |
|
|
|
const _id = message._id; |
|
|
|
const _id = message._id; |
|
|
|
delete message._id; |
|
|
|
delete message._id; |
|
|
@ -56,6 +72,10 @@ RocketChat.sendMessage = function(user, message, room, upsert = false) { |
|
|
|
message._id = RocketChat.models.Messages.insert(message); |
|
|
|
message._id = RocketChat.models.Messages.insert(message); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (Apps && Apps.isLoaded()) { |
|
|
|
|
|
|
|
Apps.getBridges().getListenerBridge().messageEvent('IPostMessageSent', message); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/* |
|
|
|
/* |
|
|
|
Defer other updates as their return is not interesting to the user |
|
|
|
Defer other updates as their return is not interesting to the user |
|
|
|
*/ |
|
|
|
*/ |
|
|
|