Clear chat_state timer when closing chat

This commit is contained in:
JC Brand 2017-12-19 19:17:38 +00:00
parent 6c6ef1f1f9
commit 32621b8327
3 changed files with 20 additions and 12 deletions

View File

@ -1182,10 +1182,9 @@
})); }));
it("will indicate when it has a time difference of more than a day between it and its predecessor", it("will indicate when it has a time difference of more than a day between it and its predecessor",
mock.initConverseWithPromises(
mock.initConverseWithPromises( null, ['rosterGroupsFetched'], {},
null, ['rosterGroupsFetched'], {}, function (done, _converse) {
function (done, _converse) {
test_utils.createContacts(_converse, 'current'); test_utils.createContacts(_converse, 'current');
test_utils.openControlBox(); test_utils.openControlBox();
@ -1897,8 +1896,8 @@
expect($stanza.children().get(0).tagName).toBe('inactive'); expect($stanza.children().get(0).tagName).toBe('inactive');
expect($stanza.children().get(1).tagName).toBe('no-store'); expect($stanza.children().get(1).tagName).toBe('no-store');
expect($stanza.children().get(2).tagName).toBe('no-permanent-store'); expect($stanza.children().get(2).tagName).toBe('no-permanent-store');
done(); }).catch(_.partial(_converse.log, _, Strophe.LogLevel.FATAL))
}).catch(_.partial(_converse.log, _, Strophe.LogLevel.FATAL)); .then(done);
})); }));
it("is sent when the user a minimizes a chat box", it("is sent when the user a minimizes a chat box",

View File

@ -577,7 +577,10 @@
} else { } else {
this.showStatusNotification(message.get('fullname')+' '+__('is typing')); this.showStatusNotification(message.get('fullname')+' '+__('is typing'));
} }
this.clear_status_timeout = window.setTimeout(this.clearStatusNotification.bind(this), 30000); this.clear_status_timeout = window.setTimeout(
this.clearStatusNotification.bind(this),
30000
);
} else if (message.get('chat_state') === _converse.PAUSED) { } else if (message.get('chat_state') === _converse.PAUSED) {
if (message.get('sender') === 'me') { if (message.get('sender') === 'me') {
this.showStatusNotification(__('Stopped typing on the other device')); this.showStatusNotification(__('Stopped typing on the other device'));
@ -749,10 +752,16 @@
} }
if (state === _converse.COMPOSING) { if (state === _converse.COMPOSING) {
this.chat_state_timeout = window.setTimeout( this.chat_state_timeout = window.setTimeout(
this.setChatState.bind(this), _converse.TIMEOUTS.PAUSED, _converse.PAUSED); this.setChatState.bind(this),
_converse.TIMEOUTS.PAUSED,
_converse.PAUSED
);
} else if (state === _converse.PAUSED) { } else if (state === _converse.PAUSED) {
this.chat_state_timeout = window.setTimeout( this.chat_state_timeout = window.setTimeout(
this.setChatState.bind(this), _converse.TIMEOUTS.INACTIVE, _converse.INACTIVE); this.setChatState.bind(this),
_converse.TIMEOUTS.INACTIVE,
_converse.INACTIVE
);
} }
if (!no_save && this.model.get('chat_state') !== state) { if (!no_save && this.model.get('chat_state') !== state) {
this.model.set('chat_state', state); this.model.set('chat_state', state);
@ -864,7 +873,7 @@
if (_converse.connection.connected) { if (_converse.connection.connected) {
// Immediately sending the chat state, because the // Immediately sending the chat state, because the
// model is going to be destroyed afterwards. // model is going to be destroyed afterwards.
this.model.set('chat_state', _converse.INACTIVE); this.setChatState(_converse.INACTIVE);
this.sendChatState(); this.sendChatState();
} }
try { try {

View File

@ -170,8 +170,6 @@
} else if (level === Strophe.LogLevel.WARN) { } else if (level === Strophe.LogLevel.WARN) {
if (_converse.debug) { if (_converse.debug) {
logger.warn(`${prefix} ${moment().format()} WARNING: ${message}`, style); logger.warn(`${prefix} ${moment().format()} WARNING: ${message}`, style);
} else {
logger.warn(`${prefix} WARNING: ${message}`, style);
} }
} else if (level === Strophe.LogLevel.FATAL) { } else if (level === Strophe.LogLevel.FATAL) {
if (_converse.debug) { if (_converse.debug) {
@ -249,7 +247,9 @@
// out or disconnecting in the previous session. // out or disconnecting in the previous session.
// This happens in tests. We therefore first clean up. // This happens in tests. We therefore first clean up.
Backbone.history.stop(); Backbone.history.stop();
_converse.chatboxviews.closeAllChatBoxes();
delete _converse.controlboxtoggle; delete _converse.controlboxtoggle;
delete _converse.chatboxviews;
_converse.connection.reset(); _converse.connection.reset();
_converse.off(); _converse.off();
_converse.stopListening(); _converse.stopListening();