Commit 29c2a964 authored by JC Brand's avatar JC Brand

Bot message doesn't appear when it has the same id as its command

parent aaaacf25
...@@ -5,6 +5,8 @@ ...@@ -5,6 +5,8 @@
- Bugfix. Login form doesn't render after logging out, when `auto_reconnect = false` - Bugfix. Login form doesn't render after logging out, when `auto_reconnect = false`
[jcbrand] [jcbrand]
- Also indicate new day for the first day's messages. [jcbrand] - Also indicate new day for the first day's messages. [jcbrand]
- Chat bot messages don't appear when they have the same ids as their commands.
[jcbrand]
## 1.0.2 (2016-05-24) ## 1.0.2 (2016-05-24)
......
...@@ -1134,7 +1134,6 @@ ...@@ -1134,7 +1134,6 @@
this.Message = Backbone.Model.extend({ this.Message = Backbone.Model.extend({
idAttribute: 'msgid',
defaults: function(){ defaults: function(){
return { return {
msgid: converse.connection.getUniqueId() msgid: converse.connection.getUniqueId()
...@@ -1173,7 +1172,6 @@ ...@@ -1173,7 +1172,6 @@
delayed = $delay.length > 0, delayed = $delay.length > 0,
fullname = this.get('fullname'), fullname = this.get('fullname'),
is_groupchat = $message.attr('type') === 'groupchat', is_groupchat = $message.attr('type') === 'groupchat',
msgid = $message.attr('id'),
chat_state = $message.find(converse.COMPOSING).length && converse.COMPOSING || chat_state = $message.find(converse.COMPOSING).length && converse.COMPOSING ||
$message.find(converse.PAUSED).length && converse.PAUSED || $message.find(converse.PAUSED).length && converse.PAUSED ||
$message.find(converse.INACTIVE).length && converse.INACTIVE || $message.find(converse.INACTIVE).length && converse.INACTIVE ||
...@@ -1205,7 +1203,7 @@ ...@@ -1205,7 +1203,7 @@
delayed: delayed, delayed: delayed,
fullname: fullname, fullname: fullname,
message: body || undefined, message: body || undefined,
msgid: msgid, msgid: $message.attr('id'),
sender: sender, sender: sender,
time: time time: time
}); });
......
...@@ -830,7 +830,6 @@ ...@@ -830,7 +830,6 @@
var $message = $(message), var $message = $(message),
$forwarded = $message.find('forwarded'), $forwarded = $message.find('forwarded'),
$delay; $delay;
if ($forwarded.length) { if ($forwarded.length) {
$message = $forwarded.children('message'); $message = $forwarded.children('message');
$delay = $forwarded.children('delay'); $delay = $forwarded.children('delay');
...@@ -839,10 +838,22 @@ ...@@ -839,10 +838,22 @@
msgid = $message.attr('id'), msgid = $message.attr('id'),
resource = Strophe.getResourceFromJid(jid), resource = Strophe.getResourceFromJid(jid),
sender = resource && Strophe.unescapeNode(resource) || '', sender = resource && Strophe.unescapeNode(resource) || '',
subject = $message.children('subject').text(); subject = $message.children('subject').text(),
text = $message.find('body').text(),
if (msgid && this.model.messages.findWhere({msgid: msgid})) { collision = msgid && this.model.messages.findWhere({'msgid': msgid});
return true; // We already have this message stored. if (collision) {
// We already have a message with this id stored.
// It might therefore be a duplicate, but we cannot yet be
// 100% sure. Some bots (like HAL in the prosody
// chatroom) respond to commands with the same ID as
// the original message. We therefore also check whether
// the sender is the same and then lastly whether the
// message text is the same.
if (collision.get('fullname') === sender) {
if (this.model.messages.findWhere({'message': text})) {
return true;
}
}
} }
if (subject) { if (subject) {
this.$el.find('.chatroom-topic').text(subject).attr('title', subject); this.$el.find('.chatroom-topic').text(subject).attr('title', subject);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment