mirror of
https://github.com/zulip/zulip.git
synced 2025-11-05 14:35:27 +00:00
Users having only account in one realm will not be distracted by realm name in subject lines of every email. Users who have multiple accounts in realms can turn this setting on and receive a corresponding realm name in email's subject. Tweaked by tabbott to rebase and address a few small issues. Fixes #5489.
121 lines
4.8 KiB
JavaScript
121 lines
4.8 KiB
JavaScript
var settings_notifications = (function () {
|
|
|
|
var exports = {};
|
|
|
|
var notification_settings = [
|
|
"enable_desktop_notifications",
|
|
"enable_digest_emails",
|
|
"enable_offline_email_notifications",
|
|
"enable_offline_push_notifications",
|
|
"enable_online_push_notifications",
|
|
"enable_sounds",
|
|
"enable_stream_desktop_notifications",
|
|
"enable_stream_push_notifications",
|
|
"enable_stream_sounds",
|
|
"pm_content_in_desktop_notifications",
|
|
"realm_name_in_notifications",
|
|
];
|
|
|
|
function maybe_bulk_update_stream_notification_setting(notification_checkbox,
|
|
propagate_setting_function) {
|
|
var html = templates.render("propagate_notification_change");
|
|
// TODO: This seems broken!!!
|
|
var group = notification_checkbox.closest(".input-group");
|
|
var checkbox_status = notification_checkbox.prop('checked');
|
|
group.find(".propagate_stream_notifications_change").html(html);
|
|
group.find(".yes_propagate_notifications").on("click", function () {
|
|
propagate_setting_function(checkbox_status);
|
|
group.find(".propagate_stream_notifications_change").empty();
|
|
});
|
|
group.find(".no_propagate_notifications").on("click", function () {
|
|
group.find(".propagate_stream_notifications_change").empty();
|
|
});
|
|
}
|
|
|
|
exports.set_up = function () {
|
|
var notify_settings_status = $("#notify-settings-status").expectOne();
|
|
notify_settings_status.hide();
|
|
|
|
if (!page_params.realm_show_digest_email) {
|
|
$("#digest_container").hide();
|
|
}
|
|
|
|
_.each(notification_settings, function (setting) {
|
|
$("#" + setting).change(function () {
|
|
var data = {};
|
|
var setting_name = $('label[for=' + setting + ']').text().trim();
|
|
var context = {setting_name: setting_name};
|
|
var setting_data = $(this).prop('checked');
|
|
data[setting] = JSON.stringify(setting_data);
|
|
|
|
channel.patch({
|
|
url: '/json/settings/notifications',
|
|
data: data,
|
|
success: function () {
|
|
if (setting_data === true) {
|
|
ui_report.success(i18n.t("Enabled: __- setting_name__",
|
|
context), notify_settings_status);
|
|
} else {
|
|
ui_report.success(i18n.t("Disabled: __- setting_name__",
|
|
context), notify_settings_status);
|
|
}
|
|
},
|
|
error: function (xhr) {
|
|
ui_report.error(i18n.t('Error updating: __- setting_name__',
|
|
context), xhr, notify_settings_status);
|
|
},
|
|
});
|
|
if (setting === 'enable_stream_desktop_notifications') {
|
|
maybe_bulk_update_stream_notification_setting($('#' + setting), function () {
|
|
stream_edit.set_notification_setting_for_all_streams('desktop_notifications', setting_data);
|
|
});
|
|
} else if (setting === 'enable_stream_push_notifications') {
|
|
maybe_bulk_update_stream_notification_setting($('#' + setting), function () {
|
|
stream_edit.set_notification_setting_for_all_streams('push_notifications', setting_data);
|
|
});
|
|
} else if (setting === 'enable_stream_sounds') {
|
|
maybe_bulk_update_stream_notification_setting($('#' + setting), function () {
|
|
stream_edit.set_notification_setting_for_all_streams('audible_notifications', setting_data);
|
|
});
|
|
}
|
|
});
|
|
});
|
|
|
|
$("#enable_desktop_notifications").change(function () {
|
|
if (this.checked) {
|
|
$("#pm_content_in_desktop_notifications").prop("disabled", false);
|
|
$("#pm_content_in_desktop_notifications_label").parent().removeClass("control-label-disabled");
|
|
} else {
|
|
$("#pm_content_in_desktop_notifications").prop("disabled", true);
|
|
$("#pm_content_in_desktop_notifications_label").parent().addClass("control-label-disabled");
|
|
}
|
|
});
|
|
|
|
$("#enable_offline_push_notifications").change(function () {
|
|
if (this.checked) {
|
|
$("#enable_online_push_notifications").prop("disabled", false);
|
|
$("#enable_online_push_notifications_label").parent().removeClass("control-label-disabled");
|
|
} else {
|
|
$("#enable_online_push_notifications").prop("disabled", true);
|
|
$("#enable_online_push_notifications_label").parent().addClass("control-label-disabled");
|
|
}
|
|
});
|
|
};
|
|
|
|
function _update_page() {
|
|
_.each(notification_settings, function (setting) {
|
|
$("#" + setting).prop('checked', page_params[setting]);
|
|
});
|
|
}
|
|
|
|
exports.update_page = function () {
|
|
i18n.ensure_i18n(_update_page);
|
|
};
|
|
|
|
return exports;
|
|
}());
|
|
|
|
if (typeof module !== 'undefined') {
|
|
module.exports = settings_notifications;
|
|
}
|