From d730f6696443571af68444635fc6965626711383 Mon Sep 17 00:00:00 2001 From: Nicolas Lempereur Date: Tue, 5 Feb 2019 17:00:33 +0000 Subject: [PATCH] [FIX] mail: mention special char=>link partner MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is a regression from: 10f0766b3. In it the visual side was solved, but unexpectedly the functional side still worked on unescaped content. Thus visually a @partnèr could be seen as a link, but it was no anymore added as follower. Without change, modified test fails with: mentioned partners are sent to server (expected: [1], result: []) note: change is partial backport of 12.2 e2f20ffa9 opw-1931247 closes #30846 --- addons/mail/static/src/js/composers/mention_manager.js | 6 ++---- addons/mail/static/tests/discuss_tests.js | 5 ++++- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/addons/mail/static/src/js/composers/mention_manager.js b/addons/mail/static/src/js/composers/mention_manager.js index 907263328cc..bca9d6f7ebc 100644 --- a/addons/mail/static/src/js/composers/mention_manager.js +++ b/addons/mail/static/src/js/composers/mention_manager.js @@ -52,10 +52,8 @@ var MentionManager = Widget.extend({ getListenerSelection: function (delimiter) { var listener = _.findWhere(this._listeners, { delimiter: delimiter }); if (listener) { - var inputMentions = this._composer - .$input - .val() - .match(new RegExp(delimiter+'[^ ]+(?= | )', 'g')); + var escapedVal = _.escape(this._composer.$input.val()); + var inputMentions = escapedVal.match(new RegExp(delimiter+'[^ ]+(?= | )', 'g')); return this._validateSelection(listener.selection, inputMentions); } return []; diff --git a/addons/mail/static/tests/discuss_tests.js b/addons/mail/static/tests/discuss_tests.js index c676a805823..3c0d2927c0a 100644 --- a/addons/mail/static/tests/discuss_tests.js +++ b/addons/mail/static/tests/discuss_tests.js @@ -424,7 +424,7 @@ QUnit.test('@ mention in channel', function (assert) { }); QUnit.test('@ mention with special chars', function (assert) { - assert.expect(10); + assert.expect(11); var done = assert.async(); var fetchListenersDef = $.Deferred(); var receiveMessageDef = $.Deferred(); @@ -452,6 +452,9 @@ QUnit.test('@ mention with special chars', function (assert) { ]); } if (args.method === 'message_post') { + assert.deepEqual(args.kwargs.partner_ids, [1], + "mentioned partners are sent to server" + ) var data = { author_id: ["42", "Me"], body: args.kwargs.body,