diff --git a/docs/CHANGES.md b/docs/CHANGES.md index 5085bdf3e..02152ecb1 100755 --- a/docs/CHANGES.md +++ b/docs/CHANGES.md @@ -69,6 +69,7 @@ New configuration setting: [muc_show_join_leave](https://conversejs.org/docs/html/configuration.html#muc-show-join-leave) - #366 Show the chat room occupant's JID in the tooltip (if you're allowed to see it). [jcbrand] +- #585 Fixes the duplication bug due to case sensivity in adding contacts [saganshul] - #610, #785 Add presence priority handling [w3host, jcbrand] - #620 `auto_away` shouldn't change the user's status if it's set to `dnd`. [jcbrand] - #694 The `notification_option` wasn't being used consistently. [jcbrand] diff --git a/spec/controlbox.js b/spec/controlbox.js index 8022cc2a2..3c79c004b 100644 --- a/spec/controlbox.js +++ b/spec/controlbox.js @@ -1087,6 +1087,34 @@ // XXX: Awaiting more tests, close it again for now... panel.$el.find('a.toggle-xmpp-contact-form').click(); })); + + it("can be used to add contact and it checks for case-sensivity", mock.initConverse(function (_converse) { + spyOn(_converse, 'emit'); + spyOn(_converse.rosterview, 'update').andCallThrough(); + runs(function () { + test_utils.openControlBox(); + // Adding two contacts one with Capital initials and one with small initials of same JID (Case sensitive check) + _converse.roster.create({ + jid: mock.pend_names[0].replace(/ /g,'.').toLowerCase() + '@localhost', + subscription: 'none', + ask: 'subscribe', + fullname: mock.pend_names[0] + }); + _converse.roster.create({ + jid: mock.pend_names[0].replace(/ /g,'.') + '@localhost', + subscription: 'none', + ask: 'subscribe', + fullname: mock.pend_names[0] + }); + }); + waits(300); + runs(function () { + // Checking that only one entry is created because both JID is same (Case sensitive check) + expect(_converse.rosterview.$el.find('dd:visible').length).toBe(1); + expect(_converse.rosterview.update).toHaveBeenCalled(); + }); + })); + }); describe("The Controlbox Tabs", function () { diff --git a/src/converse-core.js b/src/converse-core.js index 4b483b76f..ae1c69ff5 100755 --- a/src/converse-core.js +++ b/src/converse-core.js @@ -778,7 +778,7 @@ initialize: function (attributes) { var jid = attributes.jid; - var bare_jid = Strophe.getBareJidFromJid(jid); + var bare_jid = Strophe.getBareJidFromJid(jid).toLowerCase(); var resource = Strophe.getResourceFromJid(jid); attributes.jid = bare_jid; this.set(_.assignIn({ @@ -887,7 +887,7 @@ resources[resource] = { 'priority': priority, 'status': chat_status, - 'timestamp': timestamp + 'timestamp': timestamp }; var changed = {'resources': resources}; var hpr = this.getHighestPriorityResource();