diff --git a/static/js/settings.js b/static/js/settings.js
index 54845ae85e..8772a9bc4c 100644
--- a/static/js/settings.js
+++ b/static/js/settings.js
@@ -113,7 +113,6 @@ function setup_settings_label() {
night_mode: i18n.t("Night mode"),
starred_message_counts: i18n.t("Show counts for starred messages"),
twenty_four_hour_time: i18n.t("24-hour time (17:00 instead of 5:00 PM)"),
- translate_emoji_to_text: i18n.t("View emoji as text (see :smile: when others write 😃)"),
translate_emoticons: i18n.t("Convert emoticons before sending (:) becomes 😃)"),
};
}
diff --git a/static/js/settings_display.js b/static/js/settings_display.js
index 46220d0ba0..22abbd60e3 100644
--- a/static/js/settings_display.js
+++ b/static/js/settings_display.js
@@ -34,8 +34,7 @@ exports.set_up = function () {
$("#user_timezone").val(page_params.timezone);
- // $(".emojiset_choice[value=" + page_params.emojiset + "]").prop("checked", true);
- $("#translate_emoji_to_text").prop('checked', page_params.emojiset === "text");
+ $(".emojiset_choice[value=" + page_params.emojiset + "]").prop("checked", true);
$("#default_language_modal [data-dismiss]").click(function () {
overlays.close_modal('default_language_modal');
@@ -115,16 +114,22 @@ exports.set_up = function () {
data.timezone = JSON.stringify(timezone);
change_display_setting(data, '#time-settings-status');
});
-
- $("#translate_emoji_to_text").change(function () {
+ $(".emojiset_choice").click(function () {
+ var emojiset = $(this).val();
var data = {};
- var is_checked = $("#translate_emoji_to_text").is(":checked");
- if (is_checked) {
- data.emojiset = JSON.stringify("text");
- } else {
- data.emojiset = JSON.stringify("google");
- }
- change_display_setting(data, '#emoji-settings-status');
+ data.emojiset = JSON.stringify(emojiset);
+ var spinner = $("#emoji-settings-status").expectOne();
+ loading.make_indicator(spinner, {text: settings_ui.strings.saving });
+
+ channel.patch({
+ url: '/json/settings/display',
+ data: data,
+ success: function () {
+ },
+ error: function (xhr) {
+ ui_report.error(settings_ui.strings.failure, xhr, $('#emoji-settings-status').expectOne());
+ },
+ });
});
$("#translate_emoticons").change(function () {
@@ -136,8 +141,25 @@ exports.set_up = function () {
};
exports.report_emojiset_change = function () {
- // This function still has full support for multiple emojiset options.
+ // TODO: Clean up how this works so we can use
+ // change_display_setting. The challenge is that we don't want to
+ // report success before the server_events request returns that
+ // causes the actual sprite sheet to change. The current
+ // implementation is wrong, though, in that it displays the UI
+ // update in all active browser windows.
+ function emoji_success() {
+ if ($("#emoji-settings-status").length) {
+ loading.destroy_indicator($("#emojiset_spinner"));
+ $("#emojiset_select").val(page_params.emojiset);
+ ui_report.success(i18n.t("Emojiset changed successfully!"),
+ $('#emoji-settings-status').expectOne());
+ var spinner = $("#emoji-settings-status").expectOne();
+ settings_ui.display_checkmark(spinner);
+ }
+ }
+
if (page_params.emojiset === 'text') {
+ emoji_success();
return;
}
@@ -145,6 +167,7 @@ exports.report_emojiset_change = function () {
sprite.onload = function () {
var sprite_css_href = "/static/generated/emoji/" + page_params.emojiset + "-sprite.css";
$("#emoji-spritesheet").attr('href', sprite_css_href);
+ emoji_success();
};
sprite.src = "/static/generated/emoji/sheet-" + page_params.emojiset + "-64.png";
};
@@ -153,9 +176,9 @@ exports.update_page = function () {
$("#twenty_four_hour_time").prop('checked', page_params.twenty_four_hour_time);
$("#left_side_userlist").prop('checked', page_params.left_side_userlist);
$("#default_language_name").text(page_params.default_language_name);
- $("#translate_emoji_to_text").prop('checked', page_params.emojiset === "text");
$("#translate_emoticons").prop('checked', page_params.translate_emoticons);
$("#night_mode").prop('checked', page_params.night_mode);
+ // TODO: Set emojiset selector here.
// Longer term, we'll want to automate this function
};
diff --git a/static/templates/settings/display-settings.handlebars b/static/templates/settings/display-settings.handlebars
index 70cb673840..34b4837be9 100644
--- a/static/templates/settings/display-settings.handlebars
+++ b/static/templates/settings/display-settings.handlebars
@@ -82,7 +82,6 @@