mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-04 05:53:43 +00:00 
			
		
		
		
	This commit prepares the frontend code to be consumed by webpack. It is a hack: In theory, modules should be declaring and importing the modules they depend on and the globals they expose directly. However, that requires significant per-module work, which we don't really want to block moving our toolchain to webpack on. So we expose the modules by setting window.varName = varName; as needed in the js files.
		
			
				
	
	
		
			103 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			103 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
var top_left_corner = (function () {
 | 
						|
 | 
						|
var exports = {};
 | 
						|
 | 
						|
exports.get_global_filter_li = function (filter_name) {
 | 
						|
    var selector = "#global_filters li[data-name='" + filter_name + "']";
 | 
						|
    return $(selector);
 | 
						|
};
 | 
						|
 | 
						|
exports.update_count_in_dom = function (unread_count_elem, count) {
 | 
						|
    var count_span = unread_count_elem.find('.count');
 | 
						|
    var value_span = count_span.find('.value');
 | 
						|
 | 
						|
    if (count === 0) {
 | 
						|
        count_span.hide();
 | 
						|
        value_span.text('');
 | 
						|
        return;
 | 
						|
    }
 | 
						|
 | 
						|
    count_span.show();
 | 
						|
    value_span.text(count);
 | 
						|
};
 | 
						|
 | 
						|
 | 
						|
exports.update_dom_with_unread_counts = function (counts) {
 | 
						|
    // Note that "Private messages" counts are handled in pm_list.js.
 | 
						|
 | 
						|
    // mentioned/home have simple integer counts
 | 
						|
    var mentioned_li = exports.get_global_filter_li('mentioned');
 | 
						|
    var home_li = exports.get_global_filter_li('home');
 | 
						|
 | 
						|
    exports.update_count_in_dom(mentioned_li, counts.mentioned_message_count);
 | 
						|
    exports.update_count_in_dom(home_li, counts.home_unread_messages);
 | 
						|
 | 
						|
    unread_ui.animate_mention_changes(mentioned_li,
 | 
						|
                                      counts.mentioned_message_count);
 | 
						|
};
 | 
						|
 | 
						|
function deselect_top_left_corner_items() {
 | 
						|
    function remove(name) {
 | 
						|
        var li = exports.get_global_filter_li(name);
 | 
						|
        li.removeClass('active-filter active-sub-filter');
 | 
						|
    }
 | 
						|
 | 
						|
    remove('home');
 | 
						|
    remove('private');
 | 
						|
    remove('starred');
 | 
						|
    remove('mentioned');
 | 
						|
}
 | 
						|
 | 
						|
exports.handle_narrow_activated = function (filter) {
 | 
						|
    deselect_top_left_corner_items();
 | 
						|
 | 
						|
    var ops;
 | 
						|
    var filter_name;
 | 
						|
    var filter_li;
 | 
						|
 | 
						|
    // TODO: handle confused filters like "in:all stream:foo"
 | 
						|
    ops = filter.operands('in');
 | 
						|
    if (ops.length >= 1) {
 | 
						|
        filter_name = ops[0];
 | 
						|
        if (filter_name === 'home') {
 | 
						|
            filter_li = exports.get_global_filter_li(filter_name);
 | 
						|
            filter_li.addClass('active-filter');
 | 
						|
        }
 | 
						|
    }
 | 
						|
    ops = filter.operands('is');
 | 
						|
    if (ops.length >= 1) {
 | 
						|
        filter_name = ops[0];
 | 
						|
        if (filter_name === 'starred' || filter_name === 'mentioned') {
 | 
						|
            filter_li = exports.get_global_filter_li(filter_name);
 | 
						|
            filter_li.addClass('active-filter');
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    var op_is = filter.operands('is');
 | 
						|
    var op_pm = filter.operands('pm-with');
 | 
						|
    if (op_is.length >= 1 && _.contains(op_is, "private") || op_pm.length >= 1) {
 | 
						|
        if (!people.is_valid_bulk_emails_for_compose(op_pm)) {
 | 
						|
            // Don't go into the else statement and close the pm_list.
 | 
						|
            return;
 | 
						|
        }
 | 
						|
        pm_list.expand(op_pm);
 | 
						|
    } else {
 | 
						|
        pm_list.close();
 | 
						|
    }
 | 
						|
};
 | 
						|
 | 
						|
exports.handle_narrow_deactivated = function () {
 | 
						|
    deselect_top_left_corner_items();
 | 
						|
    pm_list.close();
 | 
						|
 | 
						|
    var filter_li = exports.get_global_filter_li('home');
 | 
						|
    filter_li.addClass('active-filter');
 | 
						|
};
 | 
						|
 | 
						|
return exports;
 | 
						|
}());
 | 
						|
if (typeof module !== 'undefined') {
 | 
						|
    module.exports = top_left_corner;
 | 
						|
}
 | 
						|
window.top_left_corner = top_left_corner;
 |