mirror of
				https://github.com/zulip/zulip.git
				synced 2025-10-30 19:43:47 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			114 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			114 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| import $ from "jquery";
 | |
| 
 | |
| import * as people from "./people";
 | |
| import * as pm_list from "./pm_list";
 | |
| import * as resize from "./resize";
 | |
| import * as ui_util from "./ui_util";
 | |
| import * as unread_ui from "./unread_ui";
 | |
| 
 | |
| export function update_starred_count(count) {
 | |
|     const $starred_li = $(".top_left_starred_messages");
 | |
|     ui_util.update_unread_count_in_dom($starred_li, count);
 | |
| }
 | |
| 
 | |
| export function update_dom_with_unread_counts(counts) {
 | |
|     // Note that "Private messages" counts are handled in pm_list.js.
 | |
| 
 | |
|     // mentioned/home have simple integer counts
 | |
|     const $mentioned_li = $(".top_left_mentions");
 | |
|     const $home_li = $(".top_left_all_messages");
 | |
| 
 | |
|     ui_util.update_unread_count_in_dom($mentioned_li, counts.mentioned_message_count);
 | |
|     ui_util.update_unread_count_in_dom($home_li, counts.home_unread_messages);
 | |
| 
 | |
|     unread_ui.animate_mention_changes($mentioned_li, counts.mentioned_message_count);
 | |
| }
 | |
| 
 | |
| function remove($elem) {
 | |
|     $elem.removeClass("active-filter active-sub-filter");
 | |
| }
 | |
| 
 | |
| function deselect_top_left_corner_items() {
 | |
|     remove($(".top_left_all_messages"));
 | |
|     remove($(".top_left_private_messages"));
 | |
|     remove($(".top_left_starred_messages"));
 | |
|     remove($(".top_left_mentions"));
 | |
|     remove($(".top_left_recent_topics"));
 | |
| }
 | |
| 
 | |
| function should_expand_pm_list(filter) {
 | |
|     const op_is = filter.operands("is");
 | |
| 
 | |
|     if (op_is.length >= 1 && op_is.includes("private")) {
 | |
|         return true;
 | |
|     }
 | |
| 
 | |
|     const op_pm = filter.operands("pm-with");
 | |
| 
 | |
|     if (op_pm.length !== 1) {
 | |
|         return false;
 | |
|     }
 | |
| 
 | |
|     const emails_strings = op_pm[0];
 | |
|     const emails = emails_strings.split(",");
 | |
| 
 | |
|     const has_valid_emails = people.is_valid_bulk_emails_for_compose(emails);
 | |
| 
 | |
|     return has_valid_emails;
 | |
| }
 | |
| 
 | |
| export function handle_narrow_activated(filter) {
 | |
|     deselect_top_left_corner_items();
 | |
| 
 | |
|     let ops;
 | |
|     let filter_name;
 | |
|     let $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 = $(".top_left_all_messages");
 | |
|             $filter_li.addClass("active-filter");
 | |
|         }
 | |
|     }
 | |
|     ops = filter.operands("is");
 | |
|     if (ops.length >= 1) {
 | |
|         filter_name = ops[0];
 | |
|         if (filter_name === "starred") {
 | |
|             $filter_li = $(".top_left_starred_messages");
 | |
|             $filter_li.addClass("active-filter");
 | |
|         } else if (filter_name === "mentioned") {
 | |
|             $filter_li = $(".top_left_mentions");
 | |
|             $filter_li.addClass("active-filter");
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     if (should_expand_pm_list(filter)) {
 | |
|         pm_list.expand();
 | |
|     } else {
 | |
|         pm_list.close();
 | |
|     }
 | |
| }
 | |
| 
 | |
| export function handle_narrow_deactivated() {
 | |
|     deselect_top_left_corner_items();
 | |
|     pm_list.close();
 | |
| 
 | |
|     const $filter_li = $(".top_left_all_messages");
 | |
|     $filter_li.addClass("active-filter");
 | |
| }
 | |
| 
 | |
| export function narrow_to_recent_topics() {
 | |
|     remove($(".top_left_all_messages"));
 | |
|     remove($(".top_left_private_messages"));
 | |
|     remove($(".top_left_starred_messages"));
 | |
|     remove($(".top_left_mentions"));
 | |
|     $(".top_left_recent_topics").addClass("active-filter");
 | |
|     pm_list.close();
 | |
|     setTimeout(() => {
 | |
|         resize.resize_stream_filters_container();
 | |
|     }, 0);
 | |
| }
 |