diff --git a/frontend_tests/node_tests/composebox_typeahead.js b/frontend_tests/node_tests/composebox_typeahead.js index 8b2be9ebdc..c8ec989bdb 100644 --- a/frontend_tests/node_tests/composebox_typeahead.js +++ b/frontend_tests/node_tests/composebox_typeahead.js @@ -174,7 +174,7 @@ set_global('compose', { finish: noop, }); -emoji.active_realm_emojis = {}; +emoji.active_realm_emojis = new Map(); emoji.emojis_by_name = emojis_by_name; emoji.emojis = emoji_list; diff --git a/frontend_tests/node_tests/emoji.js b/frontend_tests/node_tests/emoji.js index e9eaf5af7d..854dc9a481 100644 --- a/frontend_tests/node_tests/emoji.js +++ b/frontend_tests/node_tests/emoji.js @@ -61,9 +61,9 @@ run_test('initialize', () => { }); run_test('get_canonical_name', () => { - emoji.active_realm_emojis = { + emoji.active_realm_emojis = new Map(Object.entries({ realm_emoji: 'TBD', - }; + })); let canonical_name = emoji.get_canonical_name('realm_emoji'); assert.equal(canonical_name, 'realm_emoji'); @@ -79,9 +79,9 @@ run_test('get_canonical_name', () => { canonical_name = emoji.get_canonical_name('+1'); assert.equal(canonical_name, 'thumbs_up'); - emoji.active_realm_emojis = { + emoji.active_realm_emojis = new Map(Object.entries({ '+1': 'TBD', - }; + })); canonical_name = emoji.get_canonical_name('+1'); assert.equal(canonical_name, '+1'); diff --git a/frontend_tests/node_tests/reactions.js b/frontend_tests/node_tests/reactions.js index fe3a43795a..3b596d6953 100644 --- a/frontend_tests/node_tests/reactions.js +++ b/frontend_tests/node_tests/reactions.js @@ -25,7 +25,7 @@ set_global('emoji', { deactivated: false, }, })), - active_realm_emojis: { + active_realm_emojis: new Map(Object.entries({ realm_emoji: { id: '991', emoji_name: 'realm_emoji', @@ -36,7 +36,7 @@ set_global('emoji', { emoji_name: 'zulip', emoji_url: 'TBD', }, - }, + })), deactivated_realm_emojis: { inactive_realm_emoji: { emoji_name: 'inactive_realm_emoji', diff --git a/frontend_tests/node_tests/typeahead_helper.js b/frontend_tests/node_tests/typeahead_helper.js index 304bf91c59..ac4dd45271 100644 --- a/frontend_tests/node_tests/typeahead_helper.js +++ b/frontend_tests/node_tests/typeahead_helper.js @@ -652,9 +652,9 @@ run_test('render_emoji', () => { emoji_name: 'thumbs_up', emoji_code: '1f44d', }; - emoji.active_realm_emojis = { + emoji.active_realm_emojis = new Map(Object.entries({ realm_emoji: 'TBD', - }; + })); global.stub_templates(function (template_name, args) { assert.equal(template_name, 'typeahead_list_item'); diff --git a/static/js/emoji.js b/static/js/emoji.js index 4fa2fb1fb4..daf121fc5b 100644 --- a/static/js/emoji.js +++ b/static/js/emoji.js @@ -4,7 +4,7 @@ exports.emojis_by_name = new Map(); exports.all_realm_emojis = new Map(); -exports.active_realm_emojis = {}; +exports.active_realm_emojis = new Map(); exports.default_emoji_aliases = {}; const zulip_emoji = { @@ -20,7 +20,7 @@ exports.update_emojis = function update_emojis(realm_emojis) { // to it. This makes sure that in case of deletion, the deleted realm_emojis // don't persist in exports.active_realm_emojis. exports.all_realm_emojis.clear(); - exports.active_realm_emojis = {}; + exports.active_realm_emojis.clear(); _.each(realm_emojis, function (data) { exports.all_realm_emojis.set(data.id, { @@ -30,14 +30,16 @@ exports.update_emojis = function update_emojis(realm_emojis) { deactivated: data.deactivated, }); if (data.deactivated !== true) { - exports.active_realm_emojis[data.name] = {id: data.id, - emoji_name: data.name, - emoji_url: data.source_url}; + exports.active_realm_emojis.set(data.name, { + id: data.id, + emoji_name: data.name, + emoji_url: data.source_url, + }); } }); // Add the Zulip emoji to the realm emojis list - exports.all_realm_emojis.zulip = zulip_emoji; - exports.active_realm_emojis.zulip = zulip_emoji; + exports.all_realm_emojis.set("zulip", zulip_emoji); + exports.active_realm_emojis.set("zulip", zulip_emoji); exports.build_emoji_data(exports.active_realm_emojis); }; @@ -76,7 +78,7 @@ exports.initialize = function initialize() { exports.build_emoji_data = function (realm_emojis) { exports.emojis_by_name.clear(); let emoji_dict; - _.each(realm_emojis, function (realm_emoji, realm_emoji_name) { + for (const [realm_emoji_name, realm_emoji] of realm_emojis) { emoji_dict = { name: realm_emoji_name, display_name: realm_emoji_name, @@ -86,7 +88,7 @@ exports.build_emoji_data = function (realm_emojis) { has_reacted: false, }; exports.emojis_by_name.set(realm_emoji_name, emoji_dict); - }); + } _.each(emoji_codes.emoji_catalog, function (codepoints) { _.each(codepoints, function (codepoint) { @@ -129,7 +131,7 @@ exports.build_emoji_upload_widget = function () { }; exports.get_canonical_name = function (emoji_name) { - if (exports.active_realm_emojis.hasOwnProperty(emoji_name)) { + if (exports.active_realm_emojis.has(emoji_name)) { return emoji_name; } if (!emoji_codes.name_to_codepoint.hasOwnProperty(emoji_name)) { diff --git a/static/js/emoji_picker.js b/static/js/emoji_picker.js index 5946725516..289d9fc1be 100644 --- a/static/js/emoji_picker.js +++ b/static/js/emoji_picker.js @@ -102,9 +102,9 @@ function show_emoji_catalog() { exports.generate_emoji_picker_data = function (realm_emojis) { exports.complete_emoji_catalog = {}; exports.complete_emoji_catalog.Custom = []; - _.each(realm_emojis, function (realm_emoji, realm_emoji_name) { + for (const realm_emoji_name of realm_emojis.keys()) { exports.complete_emoji_catalog.Custom.push(emoji.emojis_by_name.get(realm_emoji_name)); - }); + } _.each(emoji_codes.emoji_catalog, function (codepoints, category) { exports.complete_emoji_catalog[category] = []; @@ -243,7 +243,7 @@ function get_alias_to_be_used(message_id, emoji_name) { // the passed name as it is. const message = message_store.get(message_id); let aliases = [emoji_name]; - if (!emoji.active_realm_emojis.hasOwnProperty(emoji_name)) { + if (!emoji.active_realm_emojis.has(emoji_name)) { if (emoji_codes.name_to_codepoint.hasOwnProperty(emoji_name)) { const codepoint = emoji_codes.name_to_codepoint[emoji_name]; aliases = emoji.default_emoji_aliases[codepoint]; diff --git a/static/js/markdown.js b/static/js/markdown.js index 7d49bb6912..02232cb09e 100644 --- a/static/js/markdown.js +++ b/static/js/markdown.js @@ -189,8 +189,8 @@ function handleUnicodeEmoji(unicode_emoji) { function handleEmoji(emoji_name) { const alt_text = ':' + emoji_name + ':'; const title = emoji_name.split("_").join(" "); - if (emoji.active_realm_emojis.hasOwnProperty(emoji_name)) { - const emoji_url = emoji.active_realm_emojis[emoji_name].emoji_url; + if (emoji.active_realm_emojis.has(emoji_name)) { + const emoji_url = emoji.active_realm_emojis.get(emoji_name).emoji_url; return '' + alt_text + ''; diff --git a/static/js/reactions.js b/static/js/reactions.js index 1f2005ce67..b56181bc04 100644 --- a/static/js/reactions.js +++ b/static/js/reactions.js @@ -119,13 +119,13 @@ exports.toggle_emoji_reaction = function (message_id, emoji_name) { emoji_name: emoji_name, }; - if (emoji.active_realm_emojis.hasOwnProperty(emoji_name)) { + if (emoji.active_realm_emojis.has(emoji_name)) { if (emoji_name === 'zulip') { reaction_info.reaction_type = 'zulip_extra_emoji'; } else { reaction_info.reaction_type = 'realm_emoji'; } - reaction_info.emoji_code = emoji.active_realm_emojis[emoji_name].id; + reaction_info.emoji_code = emoji.active_realm_emojis.get(emoji_name).id; } else if (emoji_codes.name_to_codepoint.hasOwnProperty(emoji_name)) { reaction_info.reaction_type = 'unicode_emoji'; reaction_info.emoji_code = emoji_codes.name_to_codepoint[emoji_name]; diff --git a/static/js/typeahead_helper.js b/static/js/typeahead_helper.js index dc961817aa..62c1bd8b32 100644 --- a/static/js/typeahead_helper.js +++ b/static/js/typeahead_helper.js @@ -148,7 +148,7 @@ exports.render_emoji = function (item) { is_emoji: true, primary: item.emoji_name.split("_").join(" "), }; - if (emoji.active_realm_emojis.hasOwnProperty(item.emoji_name)) { + if (emoji.active_realm_emojis.has(item.emoji_name)) { args.img_src = item.emoji_url; } else { args.emoji_code = item.emoji_code;