浏览代码

Move `sendChatState` methods to the models

JC Brand 7 年之前
父节点
当前提交
74f9952b24
共有 4 个文件被更改,包括 40 次插入37 次删除
  1. 16 0
      src/converse-chatboxes.js
  2. 1 15
      src/converse-chatview.js
  3. 0 22
      src/converse-muc-views.js
  4. 23 0
      src/converse-muc.js

+ 16 - 0
src/converse-chatboxes.js

@@ -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 @@
                     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(),

+ 1 - 15
src/converse-chatview.js

@@ -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 @@
                     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 @@
                         // 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();

+ 0 - 22
src/converse-muc-views.js

@@ -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 @@
                     }
                     }
                 },
                 },
 
 
-                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.

+ 23 - 0
src/converse-muc.js

@@ -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 @@
                       _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
                      *
                      *