Commit 74f9952b authored by JC Brand's avatar JC Brand

Move `sendChatState` methods to the models

parent 2850ef04
...@@ -207,6 +207,8 @@ ...@@ -207,6 +207,8 @@
} }
}); });
this.on('change:chat_state', this.sendChatState, this);
this.save({ this.save({
// The chat_state will be set to ACTIVE once the chat box is opened // The chat_state will be set to ACTIVE once the chat box is opened
// and we listen for change:chat_state, so shouldn't set it to ACTIVE here. // and we listen for change:chat_state, so shouldn't set it to ACTIVE here.
...@@ -287,6 +289,20 @@ ...@@ -287,6 +289,20 @@
this.sendMessageStanza(this.messages.create(attrs)); this.sendMessageStanza(this.messages.create(attrs));
}, },
sendChatState () {
/* Sends a message with the status of the user in this chat session
* as taken from the 'chat_state' attribute of the chat box.
* See XEP-0085 Chat State Notifications.
*/
_converse.connection.send(
$msg({'to':this.get('jid'), 'type': 'chat'})
.c(this.get('chat_state'), {'xmlns': Strophe.NS.CHATSTATES}).up()
.c('no-store', {'xmlns': Strophe.NS.HINTS}).up()
.c('no-permanent-store', {'xmlns': Strophe.NS.HINTS})
);
},
sendFiles (files) { sendFiles (files) {
_converse.api.disco.supports(Strophe.NS.HTTPUPLOAD, _converse.domain).then((result) => { _converse.api.disco.supports(Strophe.NS.HTTPUPLOAD, _converse.domain).then((result) => {
const item = result.pop(), const item = result.pop(),
......
...@@ -264,7 +264,6 @@ ...@@ -264,7 +264,6 @@
this.model.on('show', this.show, this); this.model.on('show', this.show, this);
this.model.on('destroy', this.remove, this); this.model.on('destroy', this.remove, this);
// TODO check for changed fullname as well // TODO check for changed fullname as well
this.model.on('change:chat_state', this.sendChatState, this);
this.model.on('change:chat_status', this.onChatStatusChanged, this); this.model.on('change:chat_status', this.onChatStatusChanged, this);
this.model.on('showHelpMessages', this.showHelpMessages, this); this.model.on('showHelpMessages', this.showHelpMessages, this);
this.render(); this.render();
...@@ -759,19 +758,6 @@ ...@@ -759,19 +758,6 @@
this.model.sendMessage(attrs); this.model.sendMessage(attrs);
}, },
sendChatState () {
/* Sends a message with the status of the user in this chat session
* as taken from the 'chat_state' attribute of the chat box.
* See XEP-0085 Chat State Notifications.
*/
_converse.connection.send(
$msg({'to':this.model.get('jid'), 'type': 'chat'})
.c(this.model.get('chat_state'), {'xmlns': Strophe.NS.CHATSTATES}).up()
.c('no-store', {'xmlns': Strophe.NS.HINTS}).up()
.c('no-permanent-store', {'xmlns': Strophe.NS.HINTS})
);
},
setChatState (state, no_save) { setChatState (state, no_save) {
/* Mutator for setting the chat state of this chat session. /* Mutator for setting the chat state of this chat session.
* Handles clearing of any chat state notification timeouts and * Handles clearing of any chat state notification timeouts and
...@@ -957,7 +943,7 @@ ...@@ -957,7 +943,7 @@
// 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.setChatState(_converse.INACTIVE); this.setChatState(_converse.INACTIVE);
this.sendChatState(); this.model.sendChatState();
} }
try { try {
this.model.destroy(); this.model.destroy();
......
...@@ -520,7 +520,6 @@ ...@@ -520,7 +520,6 @@
this.model.messages.on('rendered', this.scrollDown, this); this.model.messages.on('rendered', this.scrollDown, this);
this.model.on('change:affiliation', this.renderHeading, this); this.model.on('change:affiliation', this.renderHeading, this);
this.model.on('change:chat_state', this.sendChatState, this);
this.model.on('change:connection_status', this.afterConnected, this); this.model.on('change:connection_status', this.afterConnected, this);
this.model.on('change:description', this.renderHeading, this); this.model.on('change:description', this.renderHeading, this);
this.model.on('change:name', this.renderHeading, this); this.model.on('change:name', this.renderHeading, this);
...@@ -732,27 +731,6 @@ ...@@ -732,27 +731,6 @@
} }
}, },
sendChatState () {
/* Sends a message with the status of the user in this chat session
* as taken from the 'chat_state' attribute of the chat box.
* See XEP-0085 Chat State Notifications.
*/
if (this.model.get('connection_status') !== converse.ROOMSTATUS.ENTERED) {
return;
}
const chat_state = this.model.get('chat_state');
if (chat_state === _converse.GONE) {
// <gone/> is not applicable within MUC context
return;
}
_converse.connection.send(
$msg({'to':this.model.get('jid'), 'type': 'groupchat'})
.c(chat_state, {'xmlns': Strophe.NS.CHATSTATES}).up()
.c('no-store', {'xmlns': Strophe.NS.HINTS}).up()
.c('no-permanent-store', {'xmlns': Strophe.NS.HINTS})
);
},
sendChatRoomMessage (text) { sendChatRoomMessage (text) {
/* Constuct a message stanza to be sent to this chat room, /* Constuct a message stanza to be sent to this chat room,
* and send it to the server. * and send it to the server.
......
...@@ -191,6 +191,8 @@ ...@@ -191,6 +191,8 @@
this.constructor.__super__.initialize.apply(this, arguments); this.constructor.__super__.initialize.apply(this, arguments);
this.occupants = new _converse.ChatRoomOccupants(); this.occupants = new _converse.ChatRoomOccupants();
this.registerHandlers(); this.registerHandlers();
this.on('change:chat_state', this.sendChatState, this);
}, },
registerHandlers () { registerHandlers () {
...@@ -349,6 +351,27 @@ ...@@ -349,6 +351,27 @@
_converse.connection.send(stanza); _converse.connection.send(stanza);
}, },
sendChatState () {
/* Sends a message with the status of the user in this chat session
* as taken from the 'chat_state' attribute of the chat box.
* See XEP-0085 Chat State Notifications.
*/
if (this.get('connection_status') !== converse.ROOMSTATUS.ENTERED) {
return;
}
const chat_state = this.get('chat_state');
if (chat_state === _converse.GONE) {
// <gone/> is not applicable within MUC context
return;
}
_converse.connection.send(
$msg({'to':this.get('jid'), 'type': 'groupchat'})
.c(chat_state, {'xmlns': Strophe.NS.CHATSTATES}).up()
.c('no-store', {'xmlns': Strophe.NS.HINTS}).up()
.c('no-permanent-store', {'xmlns': Strophe.NS.HINTS})
);
},
directInvite (recipient, reason) { directInvite (recipient, reason) {
/* Send a direct invitation as per XEP-0249 /* Send a direct invitation as per XEP-0249
* *
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment