diff --git a/static/js/activity.js b/static/js/activity.js index d539f033d6..6ac4a8097f 100644 --- a/static/js/activity.js +++ b/static/js/activity.js @@ -51,6 +51,50 @@ exports.presence_info = {}; var huddle_timestamps = new Dict(); +function update_count_in_dom(count_span, value_span, count) { + if (count === 0) { + count_span.hide(); + if (count_span.parent().hasClass("user_sidebar_entry")) { + count_span.parent(".user_sidebar_entry").removeClass("user-with-count"); + } else if (count_span.parent().hasClass("group-pms-sidebar-entry")) { + count_span.parent(".group-pms-sidebar-entry").removeClass("group-with-count"); + } + value_span.text(''); + return; + } + + count_span.show(); + + if (count_span.parent().hasClass("user_sidebar_entry")) { + count_span.parent(".user_sidebar_entry").addClass("user-with-count"); + } else if (count_span.parent().hasClass("group-pms-sidebar-entry")) { + count_span.parent(".group-pms-sidebar-entry").addClass("group-with-count"); + } + value_span.text(count); +} + +function get_filter_li(name) { + if (name.indexOf(",") < 0) { + return $("li.user_sidebar_entry[data-email='" + name + "']"); + } else { + return $("li.group-pms-sidebar-entry[data-emails='" + name + "']"); + } +} + +function set_count(name, count) { + var count_span = get_filter_li(name).find('.count'); + var value_span = count_span.find('.value'); + update_count_in_dom(count_span, value_span, count); +} + +exports.update_dom_with_unread_counts = function (counts) { + // counts is just a data object that gets calculated elsewhere + // Our job is to update some DOM elements. + + counts.pm_count.each(function (count, person) { + set_count(person, count); + }); +}; exports.process_loaded_messages = function (messages) { var need_resize = false; @@ -320,7 +364,7 @@ exports.update_huddles = function () { _.each(huddles, function (huddle) { var count = unread.num_unread_for_person(huddle); - stream_list.set_presence_list_count(huddle, count); + set_count(huddle, count); }); show_huddles(); diff --git a/static/js/stream_list.js b/static/js/stream_list.js index 1059ebc907..f347d0595e 100644 --- a/static/js/stream_list.js +++ b/static/js/stream_list.js @@ -151,8 +151,6 @@ function iterate_to_find(selector, name_to_find, context) { return found ? $(found) : $(); } -// 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') { var sub = stream_data.get_sub(name); @@ -307,10 +305,6 @@ function update_count_in_dom(count_span, value_span, count) { count_span.hide(); if (count_span.parent().hasClass("subscription_block")) { count_span.parent(".subscription_block").removeClass("stream-with-count"); - } else if (count_span.parent().hasClass("user_sidebar_entry")) { - count_span.parent(".user_sidebar_entry").removeClass("user-with-count"); - } else if (count_span.parent().hasClass("group-pms-sidebar-entry")) { - count_span.parent(".group-pms-sidebar-entry").removeClass("group-with-count"); } value_span.text(''); return; @@ -320,10 +314,6 @@ function update_count_in_dom(count_span, value_span, count) { if (count_span.parent().hasClass("subscription_block")) { count_span.parent(".subscription_block").addClass("stream-with-count"); - } else if (count_span.parent().hasClass("user_sidebar_entry")) { - count_span.parent(".user_sidebar_entry").addClass("user-with-count"); - } else if (count_span.parent().hasClass("group-pms-sidebar-entry")) { - count_span.parent(".group-pms-sidebar-entry").addClass("group-with-count"); } value_span.text(count); } @@ -413,10 +403,6 @@ function animate_mention_changes(new_mention_count) { } -exports.set_presence_list_count = function (person, count) { - set_count("private", person, count); -}; - exports.update_dom_with_unread_counts = function (counts) { // counts is just a data object that gets calculated elsewhere // Our job is to update some DOM elements. @@ -434,7 +420,6 @@ exports.update_dom_with_unread_counts = function (counts) { }); counts.pm_count.each(function (count, person) { - exports.set_presence_list_count(person, count); exports.set_pm_conversation_count(person, count); }); diff --git a/static/js/unread.js b/static/js/unread.js index 2f7885f473..326f6d35ba 100644 --- a/static/js/unread.js +++ b/static/js/unread.js @@ -186,6 +186,7 @@ exports.update_unread_counts = function () { // Side effects from here down: // This updates some DOM elements directly, so try to // avoid excessive calls to this. + activity.update_dom_with_unread_counts(res); stream_list.update_dom_with_unread_counts(res); notifications.update_title_count(res.home_unread_messages); notifications.update_pm_count(res.private_message_count);