mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-03 21:43:21 +00:00 
			
		
		
		
	For privacy-minded folks who don't want to leak the information of whether they're online, this adds an option to disable sending presence updates to other users. The new settings lies in the "Other notification settings" section of the "Notification settings" page, under a "Presence" subheading. Closes #14798.
		
			
				
	
	
		
			96 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			96 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
const settings_config = require("./settings_config");
 | 
						|
const render_settings_tab = require('../templates/settings_tab.hbs');
 | 
						|
 | 
						|
$("body").ready(function () {
 | 
						|
    $("#settings_overlay_container").click(function (e) {
 | 
						|
        if (!overlays.is_modal_open()) {
 | 
						|
            return;
 | 
						|
        }
 | 
						|
        if ($(e.target).closest(".modal").length > 0) {
 | 
						|
            return;
 | 
						|
        }
 | 
						|
        e.preventDefault();
 | 
						|
        e.stopPropagation();
 | 
						|
        // Whenever opening a modal(over settings overlay) in an event handler
 | 
						|
        // attached to a click event, make sure to stop the propagation of the
 | 
						|
        // event to the parent container otherwise the modal will not open. This
 | 
						|
        // is so because this event handler will get fired on any click in settings
 | 
						|
        // overlay and subsequently close any open modal.
 | 
						|
        overlays.close_active_modal();
 | 
						|
    });
 | 
						|
});
 | 
						|
 | 
						|
function setup_settings_label() {
 | 
						|
    exports.settings_label = {
 | 
						|
        // settings_notification
 | 
						|
        enable_online_push_notifications: i18n.t("Send mobile notifications even if I'm online (useful for testing)"),
 | 
						|
        pm_content_in_desktop_notifications: i18n.t("Include content of private messages in desktop notifications"),
 | 
						|
        desktop_icon_count_display: i18n.t("Unread count summary (appears in desktop sidebar and browser tab)"),
 | 
						|
        enable_digest_emails: i18n.t("Send digest emails when I'm away"),
 | 
						|
        enable_login_emails: i18n.t("Send email notifications for new logins to my account"),
 | 
						|
        message_content_in_email_notifications: i18n.t("Include message content in missed message emails"),
 | 
						|
        realm_name_in_notifications: i18n.t("Include organization name in subject of missed message emails"),
 | 
						|
        presence_enabled: i18n.t("Display my availability to other users when online"),
 | 
						|
 | 
						|
        // display settings
 | 
						|
        dense_mode: i18n.t("Dense mode"),
 | 
						|
        fluid_layout_width: i18n.t("Use full width on wide screens"),
 | 
						|
        high_contrast_mode: i18n.t("High contrast mode"),
 | 
						|
        left_side_userlist: i18n.t("Show user list on left sidebar in narrow windows"),
 | 
						|
        night_mode: i18n.t("Night mode"),
 | 
						|
        starred_message_counts: i18n.t("Show counts for starred messages"),
 | 
						|
        twenty_four_hour_time: i18n.t("Time format"),
 | 
						|
        translate_emoticons: i18n.t("Convert emoticons before sending (<code>:)</code> becomes 😃)"),
 | 
						|
    };
 | 
						|
}
 | 
						|
 | 
						|
exports.build_page = function () {
 | 
						|
    setup_settings_label();
 | 
						|
 | 
						|
    const rendered_settings_tab = render_settings_tab({
 | 
						|
        full_name: people.my_full_name(),
 | 
						|
        page_params: page_params,
 | 
						|
        enable_sound_select: page_params.enable_sounds ||
 | 
						|
            page_params.enable_stream_audible_notifications,
 | 
						|
        zuliprc: 'zuliprc',
 | 
						|
        botserverrc: 'botserverrc',
 | 
						|
        timezones: moment.tz.names(),
 | 
						|
        can_create_new_bots: settings_bots.can_create_new_bots(),
 | 
						|
        settings_label: exports.settings_label,
 | 
						|
        demote_inactive_streams_values: settings_config.demote_inactive_streams_values,
 | 
						|
        twenty_four_hour_time_values: settings_config.twenty_four_hour_time_values,
 | 
						|
        general_settings: settings_config.all_notifications().general_settings,
 | 
						|
        notification_settings: settings_config.all_notifications().settings,
 | 
						|
        desktop_icon_count_display_values: settings_notifications.desktop_icon_count_display_values,
 | 
						|
        show_push_notifications_tooltip:
 | 
						|
            settings_config.all_notifications().show_push_notifications_tooltip,
 | 
						|
        display_settings: settings_config.get_all_display_settings(),
 | 
						|
        user_can_change_name: settings_account.user_can_change_name(),
 | 
						|
        user_can_change_avatar: settings_account.user_can_change_avatar(),
 | 
						|
    });
 | 
						|
 | 
						|
    $(".settings-box").html(rendered_settings_tab);
 | 
						|
};
 | 
						|
 | 
						|
exports.launch = function (section) {
 | 
						|
    exports.build_page();
 | 
						|
    admin.build_page();
 | 
						|
    settings_sections.reset_sections();
 | 
						|
 | 
						|
    overlays.open_settings();
 | 
						|
    settings_panel_menu.normal_settings.activate_section(section);
 | 
						|
    settings_toggle.highlight_toggle('settings');
 | 
						|
};
 | 
						|
 | 
						|
exports.set_settings_header = function (key) {
 | 
						|
    const header_text = $(`#settings_page .sidebar-list [data-section='${key}'] .text`).text();
 | 
						|
    if (header_text) {
 | 
						|
        $(".settings-header h1 .section").text(" / " + header_text);
 | 
						|
    } else {
 | 
						|
        blueslip.warn("Error: the key '" + key + "' does not exist in the settings" +
 | 
						|
            " sidebar list. Please add it.");
 | 
						|
    }
 | 
						|
};
 | 
						|
 | 
						|
window.settings = exports;
 |