emoji refactor: Let emoji.js own the data.

We now only use page_params.realm_emoji at
intialization time, and then settings_emoji
gets the data from emoji.js.
This commit is contained in:
Steve Howell
2020-07-23 22:39:22 +00:00
committed by Anders Kaseorg
parent d11c6686a1
commit 5280b87f19
4 changed files with 16 additions and 2 deletions

View File

@@ -37,6 +37,7 @@ function set_up_spain_realm_emoji_for_test() {
}, },
}; };
emoji.update_emojis(realm_emojis); emoji.update_emojis(realm_emojis);
assert.equal(emoji.get_server_realm_emoji_data(), realm_emojis);
} }
run_test("get_emoji_* API", () => { run_test("get_emoji_* API", () => {

View File

@@ -11,6 +11,16 @@ exports.all_realm_emojis = new Map();
exports.active_realm_emojis = new Map(); exports.active_realm_emojis = new Map();
exports.default_emoji_aliases = 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 = (() => { const emoticon_translations = (() => {
/* /*
@@ -91,6 +101,10 @@ exports.get_realm_emoji_url = (emoji_name) => {
}; };
exports.update_emojis = function (realm_emojis) { 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 // 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 // to it. This makes sure that in case of deletion, the deleted realm_emojis
// don't persist in exports.active_realm_emojis. // don't persist in exports.active_realm_emojis.

View File

@@ -216,7 +216,6 @@ exports.dispatch_normal_event = function dispatch_normal_event(event) {
case "realm_emoji": case "realm_emoji":
// Update `page_params.realm_emoji` so that settings page // Update `page_params.realm_emoji` so that settings page
// can display it properly when reopened without refresh. // can display it properly when reopened without refresh.
page_params.realm_emoji = event.realm_emoji;
emoji.update_emojis(event.realm_emoji); emoji.update_emojis(event.realm_emoji);
settings_emoji.populate_emoji(); settings_emoji.populate_emoji();
emoji_picker.generate_emoji_picker_data(emoji.active_realm_emojis); emoji_picker.generate_emoji_picker_data(emoji.active_realm_emojis);

View File

@@ -66,7 +66,7 @@ exports.populate_emoji = function () {
return; 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)) { for (const emoji of Object.values(emoji_data)) {
// Add people.js data for the user here. // Add people.js data for the user here.