zulip/static/js/top_left_corner.js

110 lines
3.0 KiB
JavaScript

exports.update_count_in_dom = function (unread_count_elem, count) {
const count_span = unread_count_elem.find(".count");
const 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_starred_count = function (count) {
const starred_li = $(".top_left_starred_messages");
exports.update_count_in_dom(starred_li, 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
const mentioned_li = $(".top_left_mentions");
const home_li = $(".top_left_all_messages");
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(elem) {
elem.removeClass("active-filter active-sub-filter");
}
remove($(".top_left_all_messages"));
remove($(".top_left_private_messages"));
remove($(".top_left_starred_messages"));
remove($(".top_left_mentions"));
}
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;
}
exports.handle_narrow_activated = function (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();
}
};
exports.handle_narrow_deactivated = function () {
deselect_top_left_corner_items();
pm_list.close();
const filter_li = $(".top_left_all_messages");
filter_li.addClass("active-filter");
};
window.top_left_corner = exports;