From 5e783e70e4be07a8efb8ed18402e5d68565f9817 Mon Sep 17 00:00:00 2001 From: JC Brand Date: Tue, 23 May 2017 18:16:47 +0200 Subject: [PATCH] Lay the groundwork for being able to have separate ChatRoom models --- package.json | 2 +- src/converse-core.js | 9 ++++++--- src/converse-muc.js | 13 ++++++++++++- 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 85ad45904..e1b7cba2f 100644 --- a/package.json +++ b/package.json @@ -62,7 +62,7 @@ "npm": "^4.1.1", "otr": "0.2.16", "phantomjs-prebuilt": "~2.1.14", - "pluggable.js": "1.0.0", + "pluggable.js": "https://github.com/jcbrand/pluggable.js.git#8f8c8235816f44cda0f855d6ca879445aaa486a1", "po2json": "^0.4.4", "requirejs": "2.3.3", "sinon": "^2.1.0", diff --git a/src/converse-core.js b/src/converse-core.js index 2677a3ed0..b43c612d7 100755 --- a/src/converse-core.js +++ b/src/converse-core.js @@ -1463,9 +1463,12 @@ }); this.ChatBoxes = Backbone.Collection.extend({ - model: _converse.ChatBox, comparator: 'time_opened', + model: function (attrs, options) { + return new _converse.ChatBox(attrs, options); + }, + registerMessageHandler: function () { _converse.connection.addHandler(this.onMessage.bind(this), null, 'message', 'chat'); _converse.connection.addHandler(this.onErrorMessage.bind(this), null, 'message', 'error'); @@ -1522,7 +1525,7 @@ * stanzas. */ var original_stanza = message, - contact_jid, forwarded, delay, from_bare_jid, + contact_jid, delay, from_bare_jid, from_resource, is_me, msgid, messages, chatbox, resource, from_jid = message.getAttribute('from'), @@ -1546,7 +1549,7 @@ ); return true; } - forwarded = message.querySelector('forwarded'); + var forwarded = message.querySelector('forwarded'); if (!_.isNull(forwarded)) { var forwarded_message = forwarded.querySelector('message'); var forwarded_from = forwarded_message.getAttribute('from'); diff --git a/src/converse-muc.js b/src/converse-muc.js index 485d7f75b..9d54ab263 100755 --- a/src/converse-muc.js +++ b/src/converse-muc.js @@ -142,8 +142,18 @@ } }, - ControlBoxView: { + ChatBoxes: { + model: function (attrs, options) { + var _converse = this.__super__._converse; + if (attrs.type == 'chatroom') { + return new _converse.ChatBox(attrs, options); + } else { + return this.__super__.model.apply(this, arguments); + } + }, + }, + ControlBoxView: { renderRoomsPanel: function () { var _converse = this.__super__._converse; this.roomspanel = new _converse.RoomsPanel({ @@ -1960,6 +1970,7 @@ if (sender === '') { return true; } + this.model.incrementUnreadMsgCounter(original_stanza); this.model.createMessage(message, delay, original_stanza); if (sender !== this.model.get('nick')) { // We only emit an event if it's not our own message