mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-03 21:43:21 +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;
 | 
						|
}
 |