diff --git a/zephyr/static/js/stream_list.js b/zephyr/static/js/stream_list.js index e8eddc74e2..fe38800139 100644 --- a/zephyr/static/js/stream_list.js +++ b/zephyr/static/js/stream_list.js @@ -65,9 +65,13 @@ function iterate_to_find(selector, data_name, context) { return retval; } +// TODO: Now that the unread count functions support the user sidebar +// as well, we probably should consider moving them to a different file. function get_filter_li(type, name) { if (type === 'stream') { return $("#stream_sidebar_" + subs.stream_id(name)); + } else if (type === "private") { + return $(".user_sidebar_entry > a[data-email='" + name + "']"); } return iterate_to_find("#" + type + "_filters > li", name); } @@ -224,6 +228,11 @@ exports.update_dom_with_unread_counts = function (counts) { }); }); + // counts.pm_count maps people to counts + $.each(counts.pm_count, function(person, count) { + exports.set_count("private", person, count); + }); + // integer counts exports.set_count("global", "private-message", counts.private_message_count); exports.set_count("global", "mentioned-message", counts.mentioned_message_count); diff --git a/zephyr/static/js/unread.js b/zephyr/static/js/unread.js index 910ad18179..8f3b9c7884 100644 --- a/zephyr/static/js/unread.js +++ b/zephyr/static/js/unread.js @@ -14,7 +14,7 @@ function unread_hashkey(message) { if (message.type === 'stream') { hashkey = subs.canonicalized_name(message.stream); } else { - hashkey = message.display_reply_to; + hashkey = message.reply_to; } if (unread_counts[message.type][hashkey] === undefined) { @@ -121,6 +121,7 @@ exports.get_counts = function () { res.mentioned_message_count = Object.keys(unread_mentioned).length; res.stream_count = {}; // hash by stream -> count res.subject_count = {}; // hash of hashes (stream, then subject -> count) + res.pm_count = {}; // Hash by email -> count function only_in_home_view(msgids) { return $.grep(msgids, function (msgid) { @@ -134,7 +135,7 @@ exports.get_counts = function () { } var count = Object.keys(msgs).length; - res.stream_count[stream]= count; + res.stream_count[stream] = count; if (narrow.stream_in_home(stream)) { res.home_unread_messages += only_in_home_view(Object.keys(msgs)).length; @@ -151,7 +152,9 @@ exports.get_counts = function () { var pm_count = 0; $.each(unread_counts["private"], function(index, obj) { - pm_count += Object.keys(obj).length; + var count = Object.keys(obj).length; + res.pm_count[index] = count; + pm_count += count; }); res.private_message_count = pm_count; res.home_unread_messages += pm_count; diff --git a/zephyr/static/styles/zephyr.css b/zephyr/static/styles/zephyr.css index 51b0efc0bd..fb7965c4b9 100644 --- a/zephyr/static/styles/zephyr.css +++ b/zephyr/static/styles/zephyr.css @@ -231,6 +231,10 @@ a:hover code { text-overflow: ellipsis; } +.user_sidebar_entry .count { + display: none; +} + #user_presences li.user_active { list-style-image: url(/static/images/presence/user-active.png); } diff --git a/zephyr/static/templates/user_presence_row.handlebars b/zephyr/static/templates/user_presence_row.handlebars index d2f0e98973..b42aab1c02 100644 --- a/zephyr/static/templates/user_presence_row.handlebars +++ b/zephyr/static/templates/user_presence_row.handlebars @@ -1,5 +1,5 @@ {{! User Presence rows }}