From e15afa0613297054db211e03fdaab4966147f185 Mon Sep 17 00:00:00 2001 From: Toby Zerner Date: Tue, 4 Aug 2015 19:04:31 +0930 Subject: [PATCH] Show a count in the title when there are new discussions/posts --- extensions/pusher/js/forum/src/main.js | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/extensions/pusher/js/forum/src/main.js b/extensions/pusher/js/forum/src/main.js index a48a6d0b8..085ff6c16 100644 --- a/extensions/pusher/js/forum/src/main.js +++ b/extensions/pusher/js/forum/src/main.js @@ -32,6 +32,11 @@ app.initializers.add('pusher', () => { if ((!app.current.discussion || data.discussionId !== app.current.discussion.id()) && app.pushedUpdates.indexOf(data.discussionId) === -1) { app.pushedUpdates.push(data.discussionId); + + if (app.current instanceof IndexPage) { + app.setTitleCount(app.pushedUpdates.length); + } + m.redraw(); } } @@ -68,7 +73,17 @@ app.initializers.add('pusher', () => { app.pusher.then(channel => { channel.bind('newPost', data => { if (this.discussion && this.discussion.id() === data.discussionId && this.stream) { - app.store.find('discussions', this.discussion.id()).then(() => this.stream.update()); + const oldCount = this.discussion.commentsCount(); + + app.store.find('discussions', this.discussion.id()).then(() => { + this.stream.update(); + + if (!document.hasFocus()) { + app.setTitleCount(Math.max(0, this.discussion.commentsCount() - oldCount)); + + $(window).one('focus', () => app.setTitleCount(0)); + } + }); } });