mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-04 14:03:30 +00:00 
			
		
		
		
	This is preparation for enabling an eslint indentation configuration. 90% of these changes are just fixes for indentation errors that have snuck into the codebase over the years; the others are more significant reformatting to make eslint happy (that are not otherwise actually improvements). The one area that we do not attempt to work on here is the "switch/case" indentation.
		
			
				
	
	
		
			127 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			127 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
var unread_ui = (function () {
 | 
						|
 | 
						|
var exports = {};
 | 
						|
 | 
						|
var last_private_message_count = 0;
 | 
						|
var last_mention_count = 0;
 | 
						|
 | 
						|
function do_new_messages_animation(li) {
 | 
						|
    li.addClass("new_messages");
 | 
						|
    function mid_animation() {
 | 
						|
        li.removeClass("new_messages");
 | 
						|
        li.addClass("new_messages_fadeout");
 | 
						|
    }
 | 
						|
    function end_animation() {
 | 
						|
        li.removeClass("new_messages_fadeout");
 | 
						|
    }
 | 
						|
    setTimeout(mid_animation, 3000);
 | 
						|
    setTimeout(end_animation, 6000);
 | 
						|
}
 | 
						|
 | 
						|
exports.animate_private_message_changes = function (li, new_private_message_count) {
 | 
						|
    if (new_private_message_count > last_private_message_count) {
 | 
						|
        do_new_messages_animation(li);
 | 
						|
    }
 | 
						|
    last_private_message_count = new_private_message_count;
 | 
						|
};
 | 
						|
 | 
						|
exports.animate_mention_changes = function (li, new_mention_count) {
 | 
						|
    if (new_mention_count > last_mention_count) {
 | 
						|
        do_new_messages_animation(li);
 | 
						|
    }
 | 
						|
    last_mention_count = new_mention_count;
 | 
						|
};
 | 
						|
 | 
						|
exports.set_count_toggle_button = function (elem, count) {
 | 
						|
    if (count === 0) {
 | 
						|
        if (elem.is(':animated')) {
 | 
						|
            return elem.stop(true, true).hide();
 | 
						|
        }
 | 
						|
        return elem.hide(500);
 | 
						|
    } else if ((count > 0) && (count < 1000)) {
 | 
						|
        elem.show(500);
 | 
						|
        return elem.text(count);
 | 
						|
    }
 | 
						|
    elem.show(500);
 | 
						|
    return elem.text("1k+");
 | 
						|
};
 | 
						|
 | 
						|
exports.update_unread_counts = function () {
 | 
						|
    if (unread.suppress_unread_counts) {
 | 
						|
        return;
 | 
						|
    }
 | 
						|
 | 
						|
    // Pure computation:
 | 
						|
    var res = unread.get_counts();
 | 
						|
 | 
						|
    // Side effects from here down:
 | 
						|
    // This updates some DOM elements directly, so try to
 | 
						|
    // avoid excessive calls to this.
 | 
						|
    activity.update_dom_with_unread_counts(res);
 | 
						|
    top_left_corner.update_dom_with_unread_counts(res);
 | 
						|
    stream_list.update_dom_with_unread_counts(res);
 | 
						|
    pm_list.update_dom_with_unread_counts(res);
 | 
						|
    notifications.update_title_count(res.home_unread_messages);
 | 
						|
    notifications.update_pm_count(res.private_message_count);
 | 
						|
 | 
						|
    exports.set_count_toggle_button($("#streamlist-toggle-unreadcount"),
 | 
						|
                                    res.home_unread_messages);
 | 
						|
 | 
						|
};
 | 
						|
 | 
						|
exports.enable = function enable() {
 | 
						|
    unread.suppress_unread_counts = false;
 | 
						|
    exports.update_unread_counts();
 | 
						|
};
 | 
						|
 | 
						|
function consider_bankruptcy() {
 | 
						|
    // Until we've handled possibly declaring bankruptcy, don't show
 | 
						|
    // unread counts since they only consider messages that are loaded
 | 
						|
    // client side and may be different from the numbers reported by
 | 
						|
    // the server.
 | 
						|
 | 
						|
    if (!page_params.furthest_read_time) {
 | 
						|
        // We've never read a message.
 | 
						|
        exports.enable();
 | 
						|
        return;
 | 
						|
    }
 | 
						|
 | 
						|
    var now = new XDate(true).getTime() / 1000;
 | 
						|
    if ((page_params.unread_msgs.count > 500) &&
 | 
						|
            (now - page_params.furthest_read_time > 60 * 60 * 24 * 2)) { // 2 days.
 | 
						|
        var rendered_modal = templates.render('bankruptcy_modal', {
 | 
						|
            unread_count: page_params.unread_msgs.count});
 | 
						|
        $('#bankruptcy-unread-count').html(rendered_modal);
 | 
						|
        $('#bankruptcy').modal('show');
 | 
						|
    } else {
 | 
						|
        exports.enable();
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
function _initialize() {
 | 
						|
    // No matter how the bankruptcy modal is closed, show unread counts after.
 | 
						|
    $("#bankruptcy").on("hide", function () {
 | 
						|
        unread_ui.enable();
 | 
						|
    });
 | 
						|
 | 
						|
    $('#yes-bankrupt').click(function () {
 | 
						|
        pointer.fast_forward_pointer();
 | 
						|
        $("#yes-bankrupt").hide();
 | 
						|
        $("#no-bankrupt").hide();
 | 
						|
        $(this).after($("<div>").addClass("alert alert-info settings_committed")
 | 
						|
            .text(i18n.t("Bringing you to your latest messages…")));
 | 
						|
    });
 | 
						|
 | 
						|
    consider_bankruptcy();
 | 
						|
}
 | 
						|
 | 
						|
exports.initialize = function () {
 | 
						|
    i18n.ensure_i18n(_initialize);
 | 
						|
};
 | 
						|
 | 
						|
return exports;
 | 
						|
}());
 | 
						|
if (typeof module !== 'undefined') {
 | 
						|
    module.exports = unread_ui;
 | 
						|
}
 |