From b1272a697b01deec5be06b6518436603b7fe1ba8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20Cargo=C3=ABt?= Date: Wed, 1 Apr 2015 15:11:24 +0200 Subject: [PATCH] Fix the known bug where a state notification reopens a chat box --- converse.js | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/converse.js b/converse.js index 7c5f36958..f4e54c62b 100644 --- a/converse.js +++ b/converse.js @@ -3119,12 +3119,15 @@ chatbox = this.get(contact_jid); if (!chatbox) { - /* FIXME: there is a bug here. If chat state notifications - * (because a roster contact closed a chat box of yours - * they had open) are received and we don't have a chat with - * the user, then a chat box is created here which then - * opens automatically :( + /* If chat state notifications (because a roster contact + * closed a chat box of yours they had open) are received + * and we don't have a chat with the user, then we do not + * want to open a chat box. We only open a new chat box when + * the message has a body. */ + if ($message.find('body').length === 0) { + return true; + } var fullname = roster_item.get('fullname'); fullname = _.isEmpty(fullname)? contact_jid: fullname; chatbox = this.create({ @@ -3140,7 +3143,7 @@ // FIXME: There's still a bug here.. // If a duplicate message is received just after the chat // box was closed, then it'll open again (due to it being - // created here above), with now new messages. + // created here above), with no new messages. // The solution is mostly likely to not let chat boxes show // automatically when they are created, but to require // "show" to be called explicitly.