Files
zulip/static/js/unread_ui.js
Steve Howell 0c029fa3df left sidebar: Remove broken animation for new PMs.
When new PMs came in, we would do a little
animation to show you the incoming message.
Unfortunately, it was broken and would animate
too many things.  (The code looks at a single
var to see if PM counts changed, but there are
actually mulitple PM counts.  We could fix that,
but we decided that this feature just isn't
worth the complexity.)

We still animate incoming mentions.

Fixes #11868.
2019-03-15 13:33:11 -07:00

117 lines
3.4 KiB
JavaScript

var unread_ui = (function () {
var exports = {};
var last_mention_count = 0;
function do_new_messages_animation(li) {
li.addClass("new_messages");
function mid_animation() {
li.removeClass("new_messages");
li.addClass("new_messages_fadeout");
}
function end_animation() {
li.removeClass("new_messages_fadeout");
}
setTimeout(mid_animation, 3000);
setTimeout(end_animation, 6000);
}
exports.animate_mention_changes = function (li, new_mention_count) {
if (new_mention_count > last_mention_count) {
do_new_messages_animation(li);
}
last_mention_count = new_mention_count;
};
exports.set_count_toggle_button = function (elem, count) {
if (count === 0) {
if (elem.is(':animated')) {
return elem.stop(true, true).hide();
}
return elem.hide(500);
} else if (count > 0 && count < 1000) {
elem.show(500);
return elem.text(count);
}
elem.show(500);
return elem.text("1k+");
};
exports.update_unread_counts = function () {
if (unread.suppress_unread_counts) {
return;
}
// Pure computation:
var res = unread.get_counts();
// 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);
top_left_corner.update_dom_with_unread_counts(res);
stream_list.update_dom_with_unread_counts(res);
pm_list.update_dom_with_unread_counts(res);
notifications.update_title_count(res.home_unread_messages);
notifications.update_pm_count(res.private_message_count);
exports.set_count_toggle_button($("#streamlist-toggle-unreadcount"),
res.home_unread_messages);
};
exports.enable = function enable() {
unread.suppress_unread_counts = false;
exports.update_unread_counts();
};
function consider_bankruptcy() {
// Until we've handled possibly declaring bankruptcy, don't show
// unread counts since they only consider messages that are loaded
// client side and may be different from the numbers reported by
// the server.
if (!page_params.furthest_read_time) {
// We've never read a message.
exports.enable();
return;
}
var now = new XDate(true).getTime() / 1000;
if (page_params.unread_msgs.count > 500 &&
now - page_params.furthest_read_time > 60 * 60 * 24 * 2) { // 2 days.
var rendered_modal = templates.render('bankruptcy_modal', {
unread_count: page_params.unread_msgs.count});
$('#bankruptcy-unread-count').html(rendered_modal);
$('#bankruptcy').modal('show');
} else {
exports.enable();
}
}
exports.initialize = function () {
// No matter how the bankruptcy modal is closed, show unread counts after.
$("#bankruptcy").on("hide", function () {
unread_ui.enable();
});
$('#yes-bankrupt').click(function () {
pointer.fast_forward_pointer();
$("#yes-bankrupt").hide();
$("#no-bankrupt").hide();
$('#bankruptcy-loader').css('margin', '0 auto');
loading.make_indicator($('#bankruptcy-loader'),
{text: i18n.t('Marking all messages as read…')});
});
consider_bankruptcy();
};
return exports;
}());
if (typeof module !== 'undefined') {
module.exports = unread_ui;
}
window.unread_ui = unread_ui;