Add support for XEP-0280 Message Carbons. updates #132
This commit is contained in:
parent
968f8bb223
commit
eca42fbb2f
44
converse.js
44
converse.js
@ -152,6 +152,7 @@
|
|||||||
this.cache_otr_key = false;
|
this.cache_otr_key = false;
|
||||||
this.debug = false;
|
this.debug = false;
|
||||||
this.default_box_height = 324; // The default height, in pixels, for the control box, chat boxes and chatrooms.
|
this.default_box_height = 324; // The default height, in pixels, for the control box, chat boxes and chatrooms.
|
||||||
|
this.enable_message_carbons = false;
|
||||||
this.expose_rid_and_sid = false;
|
this.expose_rid_and_sid = false;
|
||||||
this.forward_messages = false;
|
this.forward_messages = false;
|
||||||
this.hide_muc_server = false;
|
this.hide_muc_server = false;
|
||||||
@ -184,6 +185,7 @@
|
|||||||
'connection',
|
'connection',
|
||||||
'debug',
|
'debug',
|
||||||
'default_box_height',
|
'default_box_height',
|
||||||
|
'enable_message_carbons',
|
||||||
'expose_rid_and_sid',
|
'expose_rid_and_sid',
|
||||||
'forward_messages',
|
'forward_messages',
|
||||||
'fullname',
|
'fullname',
|
||||||
@ -567,6 +569,25 @@
|
|||||||
}, this));
|
}, this));
|
||||||
};
|
};
|
||||||
|
|
||||||
|
this.enableCarbons = function () {
|
||||||
|
/* Ask the XMPP server to enable Message Carbons
|
||||||
|
* See XEP-0280 https://xmpp.org/extensions/xep-0280.html#enabling
|
||||||
|
*/
|
||||||
|
if (!this.enable_message_carbons) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var carbons_iq = new Strophe.Builder('iq', {
|
||||||
|
from: this.connection.jid,
|
||||||
|
id: 'enablecarbons',
|
||||||
|
type: 'set'
|
||||||
|
})
|
||||||
|
.c('enable', {xmlns: 'urn:xmpp:carbons:2'});
|
||||||
|
this.connection.send(carbons_iq);
|
||||||
|
this.connection.addHandler(function(iq) {
|
||||||
|
//TODO: check if carbons was enabled:
|
||||||
|
}, null, "iq", null, "enablecarbons");
|
||||||
|
};
|
||||||
|
|
||||||
this.onConnected = function () {
|
this.onConnected = function () {
|
||||||
if (this.debug) {
|
if (this.debug) {
|
||||||
this.connection.xmlInput = function (body) { console.log(body); };
|
this.connection.xmlInput = function (body) { console.log(body); };
|
||||||
@ -577,12 +598,12 @@
|
|||||||
this.bare_jid = Strophe.getBareJidFromJid(this.connection.jid);
|
this.bare_jid = Strophe.getBareJidFromJid(this.connection.jid);
|
||||||
this.domain = Strophe.getDomainFromJid(this.connection.jid);
|
this.domain = Strophe.getDomainFromJid(this.connection.jid);
|
||||||
this.features = new this.Features();
|
this.features = new this.Features();
|
||||||
|
this.enableCarbons();
|
||||||
this.initStatus($.proxy(function () {
|
this.initStatus($.proxy(function () {
|
||||||
this.initRoster();
|
this.initRoster();
|
||||||
this.chatboxes.onConnected();
|
this.chatboxes.onConnected();
|
||||||
this.connection.roster.get(function () {});
|
this.connection.roster.get(function () {});
|
||||||
this.giveFeedback(__('Online Contacts'));
|
this.giveFeedback(__('Online Contacts'));
|
||||||
|
|
||||||
if (this.callback) {
|
if (this.callback) {
|
||||||
if (this.connection.service === 'jasmine tests') {
|
if (this.connection.service === 'jasmine tests') {
|
||||||
// XXX: Call back with the internal converse object. This
|
// XXX: Call back with the internal converse object. This
|
||||||
@ -792,9 +813,8 @@
|
|||||||
this.save({'otr_status': UNENCRYPTED});
|
this.save({'otr_status': UNENCRYPTED});
|
||||||
},
|
},
|
||||||
|
|
||||||
createMessage: function (message) {
|
createMessage: function ($message) {
|
||||||
var $message = $(message),
|
var body = $message.children('body').text(),
|
||||||
body = $message.children('body').text(),
|
|
||||||
from = Strophe.getBareJidFromJid($message.attr('from')),
|
from = Strophe.getBareJidFromJid($message.attr('from')),
|
||||||
composing = $message.find('composing'),
|
composing = $message.find('composing'),
|
||||||
delayed = $message.find('delay').length > 0,
|
delayed = $message.find('delay').length > 0,
|
||||||
@ -834,11 +854,11 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
receiveMessage: function (message) {
|
receiveMessage: function ($message) {
|
||||||
var $body = $(message).children('body');
|
var $body = $message.children('body');
|
||||||
var text = ($body.length > 0 ? $body.text() : undefined);
|
var text = ($body.length > 0 ? $body.text() : undefined);
|
||||||
if ((!text) || (!converse.allow_otr)) {
|
if ((!text) || (!converse.allow_otr)) {
|
||||||
return this.createMessage(message);
|
return this.createMessage($message);
|
||||||
}
|
}
|
||||||
if (text.match(/^\?OTRv23?/)) {
|
if (text.match(/^\?OTRv23?/)) {
|
||||||
this.initiateOTR(text);
|
this.initiateOTR(text);
|
||||||
@ -854,7 +874,7 @@
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// Normal unencrypted message.
|
// Normal unencrypted message.
|
||||||
this.createMessage(message);
|
this.createMessage($message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2412,14 +2432,18 @@
|
|||||||
onMessage: function (message) {
|
onMessage: function (message) {
|
||||||
var buddy_jid, $message = $(message),
|
var buddy_jid, $message = $(message),
|
||||||
message_from = $message.attr('from');
|
message_from = $message.attr('from');
|
||||||
if (message_from == converse.connection.jid) {
|
if (message_from === converse.connection.jid) {
|
||||||
// FIXME: Forwarded messages should be sent to specific resources,
|
// FIXME: Forwarded messages should be sent to specific resources,
|
||||||
// not broadcasted
|
// not broadcasted
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
var $forwarded = $message.children('forwarded');
|
var $forwarded = $message.children('forwarded');
|
||||||
|
var $received = $message.children('received');
|
||||||
if ($forwarded.length) {
|
if ($forwarded.length) {
|
||||||
$message = $forwarded.children('message');
|
$message = $forwarded.children('message');
|
||||||
|
} else if ($received.length && $received.attr('xmlns') === 'urn:xmpp:carbons:2') {
|
||||||
|
$message = $message.children('received').children('forwarded').children('message');
|
||||||
|
message_from = $message.attr('from');
|
||||||
}
|
}
|
||||||
var from = Strophe.getBareJidFromJid(message_from),
|
var from = Strophe.getBareJidFromJid(message_from),
|
||||||
to = Strophe.getBareJidFromJid($message.attr('to')),
|
to = Strophe.getBareJidFromJid($message.attr('to')),
|
||||||
@ -2453,7 +2477,7 @@
|
|||||||
'url': roster_item.get('url')
|
'url': roster_item.get('url')
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
chatbox.receiveMessage(message);
|
chatbox.receiveMessage($message);
|
||||||
converse.roster.addResource(buddy_jid, resource);
|
converse.roster.addResource(buddy_jid, resource);
|
||||||
converse.emit('onMessage', message);
|
converse.emit('onMessage', message);
|
||||||
return true;
|
return true;
|
||||||
|
@ -5,10 +5,14 @@ Changelog
|
|||||||
----------------
|
----------------
|
||||||
|
|
||||||
* Chat boxes and rooms can now be resized vertically. [jcbrand]
|
* Chat boxes and rooms can now be resized vertically. [jcbrand]
|
||||||
* Chat boxes and rooms can be minimized. [jcbrand]
|
|
||||||
* Upgraded many dependencies to their latest versions. [jcbrand]
|
* Upgraded many dependencies to their latest versions. [jcbrand]
|
||||||
* Add new configuration setting `forward_messages <https://conversejs.org/docs/html/index.html#forward_messages>`_
|
* Add new configuration setting `forward_messages <https://conversejs.org/docs/html/index.html#forward_messages>`_
|
||||||
Message forwarding was before default behavior but is now optional (and disabled by default). [jcbrand]
|
Message forwarding was before default behavior but is now optional (and disabled by default).
|
||||||
|
[jcbrand]
|
||||||
|
* #71 Chat boxes and rooms can be minimized. [jcbrand]
|
||||||
|
* #132 Support for `XEP-0280: Message Carbons <https://xmpp.org/extensions/xep-0280.html'>`_.
|
||||||
|
Configured via `enable_message_carbons <https://conversejs.org/docs/html/index.html#enable_message_carbons>`_
|
||||||
|
[hejazee]
|
||||||
|
|
||||||
0.7.4 (2014-03-05)
|
0.7.4 (2014-03-05)
|
||||||
------------------
|
------------------
|
||||||
|
@ -968,6 +968,13 @@ Default = ``false``
|
|||||||
|
|
||||||
If set to true, debugging output will be logged to the browser console.
|
If set to true, debugging output will be logged to the browser console.
|
||||||
|
|
||||||
|
enable_message_carbons
|
||||||
|
----------------------
|
||||||
|
|
||||||
|
Default = ``false``
|
||||||
|
|
||||||
|
Support for `XEP-0280: Message Carbons <https://xmpp.org/extensions/xep-0280.html>`_
|
||||||
|
|
||||||
expose_rid_and_sid
|
expose_rid_and_sid
|
||||||
------------------
|
------------------
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user