Don't increment unread msgs counter for <paused> chat state.

Also update release notes. updates #267
This commit is contained in:
JC Brand 2014-10-30 11:48:58 +01:00
parent 0f06902bf4
commit 147e62d000
3 changed files with 47 additions and 5 deletions

View File

@ -909,6 +909,9 @@
if (!body) {
if (composing.length || paused.length) {
// FIXME: use one attribute for chat states (e.g.
// chatstate) instead of saving 'paused' and
// 'composing' separately.
this.messages.add({
fullname: fullname,
sender: 'them',
@ -3043,12 +3046,14 @@
},
initialize: function () {
this.model.messages.on('add', function(msg) {
if (!msg.attributes.composing) {this.updateUnreadMessagesCounter();}
} , this);
this.model.on('showSentOTRMessage', this.updateUnreadMessagesCounter, this);
this.model.on('showReceivedOTRMessage', this.updateUnreadMessagesCounter, this);
this.model.messages.on('add', function (m) {
if (!(m.get('composing') || m.get('paused'))) {
this.updateUnreadMessagesCounter();
}
}, this);
this.model.on('change:minimized', this.clearUnreadMessagesCounter, this);
this.model.on('showReceivedOTRMessage', this.updateUnreadMessagesCounter, this);
this.model.on('showSentOTRMessage', this.updateUnreadMessagesCounter, this);
},
render: function () {

View File

@ -17,6 +17,7 @@ Changelog
* #151 Browser locks/freezes with many roster users. [jcbrand]
* #251 Non-minified builds for debugging. [jcbrand]
* #264 Remove unnecessary commas for ie8 compatibility. [Deuteu]
* #267 Unread messages counter wrongly gets incremented by chat state notifications. [Deuteu]
0.8.3 (2014-09-22)
------------------

View File

@ -84,6 +84,42 @@
expect(this.minimized_chats.toggleview.$('.unread-message-count').is(':visible')).toBeTruthy();
expect(this.minimized_chats.toggleview.$('.unread-message-count').text()).toBe((i+1).toString());
}
// Chat state notifications don't increment the unread messages counter
// <composing> state
this.chatboxes.onMessage($msg({
from: contact_jid,
to: this.connection.jid,
type: 'chat',
id: (new Date()).getTime()
}).c('composing', {'xmlns': 'http://jabber.org/protocol/chatstates'}).tree());
expect(this.minimized_chats.toggleview.$('.unread-message-count').text()).toBe((i).toString());
// <paused> state
this.chatboxes.onMessage($msg({
from: contact_jid,
to: this.connection.jid,
type: 'chat',
id: (new Date()).getTime()
}).c('paused', {'xmlns': 'http://jabber.org/protocol/chatstates'}).tree());
expect(this.minimized_chats.toggleview.$('.unread-message-count').text()).toBe((i).toString());
// <gone> state
this.chatboxes.onMessage($msg({
from: contact_jid,
to: this.connection.jid,
type: 'chat',
id: (new Date()).getTime()
}).c('gone', {'xmlns': 'http://jabber.org/protocol/chatstates'}).tree());
expect(this.minimized_chats.toggleview.$('.unread-message-count').text()).toBe((i).toString());
// <inactive> state
this.chatboxes.onMessage($msg({
from: contact_jid,
to: this.connection.jid,
type: 'chat',
id: (new Date()).getTime()
}).c('inactive', {'xmlns': 'http://jabber.org/protocol/chatstates'}).tree());
expect(this.minimized_chats.toggleview.$('.unread-message-count').text()).toBe((i).toString());
}, converse));
}, converse, mock, test_utils));