diff --git a/frontend_tests/node_tests/emoji.js b/frontend_tests/node_tests/emoji.js index b9a405068d..a0f3a46797 100644 --- a/frontend_tests/node_tests/emoji.js +++ b/frontend_tests/node_tests/emoji.js @@ -37,6 +37,7 @@ function set_up_spain_realm_emoji_for_test() { }, }; emoji.update_emojis(realm_emojis); + assert.equal(emoji.get_server_realm_emoji_data(), realm_emojis); } run_test("get_emoji_* API", () => { diff --git a/static/js/emoji.js b/static/js/emoji.js index 7bf2cbcbfe..6211eb3936 100644 --- a/static/js/emoji.js +++ b/static/js/emoji.js @@ -11,6 +11,16 @@ exports.all_realm_emojis = new Map(); exports.active_realm_emojis = new Map(); exports.default_emoji_aliases = new Map(); +// For legacy reasons we track server_realm_emoji_data, +// since our settings code builds off that format. We +// should move it to use all_realm_emojis, which requires +// adding author_id here and then changing the settings code +// in a slightly non-trivial way. +exports.server_realm_emoji_data = {}; + +// We really want to deprecate this, too. +exports.get_server_realm_emoji_data = () => exports.server_realm_emoji_data; + const emoticon_translations = (() => { /* @@ -91,6 +101,10 @@ exports.get_realm_emoji_url = (emoji_name) => { }; exports.update_emojis = function (realm_emojis) { + // The settings code still works with the + // server format of the data. + exports.server_realm_emoji_data = realm_emojis; + // exports.all_realm_emojis is emptied before adding the realm-specific emoji // to it. This makes sure that in case of deletion, the deleted realm_emojis // don't persist in exports.active_realm_emojis. diff --git a/static/js/server_events_dispatch.js b/static/js/server_events_dispatch.js index f9014ba6de..898d83690f 100644 --- a/static/js/server_events_dispatch.js +++ b/static/js/server_events_dispatch.js @@ -216,7 +216,6 @@ exports.dispatch_normal_event = function dispatch_normal_event(event) { case "realm_emoji": // Update `page_params.realm_emoji` so that settings page // can display it properly when reopened without refresh. - page_params.realm_emoji = event.realm_emoji; emoji.update_emojis(event.realm_emoji); settings_emoji.populate_emoji(); emoji_picker.generate_emoji_picker_data(emoji.active_realm_emojis); diff --git a/static/js/settings_emoji.js b/static/js/settings_emoji.js index 2e0d805b54..48636eaa18 100644 --- a/static/js/settings_emoji.js +++ b/static/js/settings_emoji.js @@ -66,7 +66,7 @@ exports.populate_emoji = function () { return; } - const emoji_data = page_params.realm_emoji; + const emoji_data = emoji.get_server_realm_emoji_data(); for (const emoji of Object.values(emoji_data)) { // Add people.js data for the user here.