diff --git a/frontend_tests/node_tests/markdown.js b/frontend_tests/node_tests/markdown.js index 8da468850b..c6f96e5ee2 100644 --- a/frontend_tests/node_tests/markdown.js +++ b/frontend_tests/node_tests/markdown.js @@ -542,3 +542,12 @@ run_test('katex_throws_unexpected_exceptions', () => { assert(blueslip.get_test_logs('error').length, 1); blueslip.clear_test_data(); }); + +run_test('misc_helpers', () => { + const elem = $('.user-mention'); + markdown.set_name_in_mention_element(elem, 'Aaron'); + assert.equal(elem.text(), '@Aaron'); + elem.addClass('silent'); + markdown.set_name_in_mention_element(elem, 'Aaron, but silent'); + assert.equal(elem.text(), 'Aaron, but silent'); +}); diff --git a/static/js/markdown.js b/static/js/markdown.js index b6a817a753..594b0a0b37 100644 --- a/static/js/markdown.js +++ b/static/js/markdown.js @@ -36,6 +36,15 @@ var backend_only_markdown_re = [ /[^\s]*(?:twitter|youtube).com\/[^\s]*/, ]; +// Helper function to update a mentioned user's name. +exports.set_name_in_mention_element = function (element, name) { + if ($(element).hasClass('silent')) { + $(element).text(name); + } else { + $(element).text("@" + name); + } +}; + exports.contains_backend_only_syntax = function (content) { // Try to guess whether or not a message has bugdown in it // If it doesn't, we can immediately render it client-side diff --git a/static/js/message_list_view.js b/static/js/message_list_view.js index 044ede37f7..b2df36ea68 100644 --- a/static/js/message_list_view.js +++ b/static/js/message_list_view.js @@ -525,11 +525,7 @@ MessageListView.prototype = { if (person !== undefined) { // Note that person might be undefined in some // unpleasant corner cases involving data import. - if ($(this).hasClass('silent')) { - $(this).text(person.full_name); - } else { - $(this).text("@" + person.full_name); - } + markdown.set_name_in_mention_element(this, person.full_name); } } });