mirror of https://github.com/zulip/zulip.git
unread: Add option to include max msg id in unread topic/dm data.
This commit is contained in:
parent
57c1c56028
commit
1d126078a2
|
@ -151,13 +151,21 @@ class UnreadDirectMessageCounter {
|
||||||
this.bucketer.delete(message_id);
|
this.bucketer.delete(message_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
get_counts() {
|
get_counts(include_latest_msg_id = false) {
|
||||||
const pm_dict = new Map(); // Hash by user_ids_string -> count
|
const pm_dict = new Map(); // Hash by user_ids_string -> count Optional[, max_id]
|
||||||
let total_count = 0;
|
let total_count = 0;
|
||||||
let right_sidebar_count = 0;
|
let right_sidebar_count = 0;
|
||||||
for (const [user_ids_string, id_set] of this.bucketer) {
|
for (const [user_ids_string, id_set] of this.bucketer) {
|
||||||
const count = id_set.size;
|
const count = id_set.size;
|
||||||
|
if (include_latest_msg_id) {
|
||||||
|
const latest_msg_id = Math.max(...id_set);
|
||||||
|
pm_dict.set(user_ids_string, {
|
||||||
|
count,
|
||||||
|
latest_msg_id,
|
||||||
|
});
|
||||||
|
} else {
|
||||||
pm_dict.set(user_ids_string, count);
|
pm_dict.set(user_ids_string, count);
|
||||||
|
}
|
||||||
const user_ids = people.user_ids_string_to_ids_array(user_ids_string);
|
const user_ids = people.user_ids_string_to_ids_array(user_ids_string);
|
||||||
const is_with_one_human =
|
const is_with_one_human =
|
||||||
user_ids.length === 1 && !people.get_by_user_id(user_ids[0]).is_bot;
|
user_ids.length === 1 && !people.get_by_user_id(user_ids[0]).is_bot;
|
||||||
|
@ -261,7 +269,7 @@ class UnreadTopicCounter {
|
||||||
this.bucketer.delete(msg_id);
|
this.bucketer.delete(msg_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
get_counts(include_per_topic_count = false) {
|
get_counts(include_per_topic_count = false, include_per_topic_latest_msg_id = false) {
|
||||||
const res = {};
|
const res = {};
|
||||||
res.stream_unread_messages = 0;
|
res.stream_unread_messages = 0;
|
||||||
res.stream_count = new Map(); // hash by stream_id -> count
|
res.stream_count = new Map(); // hash by stream_id -> count
|
||||||
|
@ -280,7 +288,15 @@ class UnreadTopicCounter {
|
||||||
let stream_count = 0;
|
let stream_count = 0;
|
||||||
for (const [topic, msgs] of per_stream_bucketer) {
|
for (const [topic, msgs] of per_stream_bucketer) {
|
||||||
const topic_count = msgs.size;
|
const topic_count = msgs.size;
|
||||||
|
if (include_per_topic_latest_msg_id) {
|
||||||
|
const latest_msg_id = Math.max(...msgs);
|
||||||
|
topic_unread.set(topic, {
|
||||||
|
topic_count,
|
||||||
|
latest_msg_id,
|
||||||
|
});
|
||||||
|
} else {
|
||||||
topic_unread.set(topic, topic_count);
|
topic_unread.set(topic, topic_count);
|
||||||
|
}
|
||||||
stream_count += topic_count;
|
stream_count += topic_count;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -770,14 +786,17 @@ export function declare_bankruptcy() {
|
||||||
unread_mention_topics.clear();
|
unread_mention_topics.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
export function get_unread_pm() {
|
export function get_unread_pm(include_per_bucket_latest_msg_id = false) {
|
||||||
const pm_res = unread_direct_message_counter.get_counts();
|
const pm_res = unread_direct_message_counter.get_counts(include_per_bucket_latest_msg_id);
|
||||||
return pm_res;
|
return pm_res;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function get_unread_topics() {
|
export function get_unread_topics(include_per_topic_latest_msg_id = false) {
|
||||||
const include_per_topic_count = true;
|
const include_per_topic_count = true;
|
||||||
const topics_res = unread_topic_counter.get_counts(include_per_topic_count);
|
const topics_res = unread_topic_counter.get_counts(
|
||||||
|
include_per_topic_count,
|
||||||
|
include_per_topic_latest_msg_id,
|
||||||
|
);
|
||||||
return topics_res;
|
return topics_res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue