prevent message delivery receipts for carbons and own
This commit is contained in:
parent
6ec183451d
commit
216a684904
|
@ -5,6 +5,7 @@
|
|||
- Bugfix: MUC commands were being ignored
|
||||
- UI: Always show the OMEMO lock icon (grayed out if not available).
|
||||
- #1374 Can't load embedded chat when changing `view_mode` between page reloads
|
||||
- Bugfix: Message Delivery Receipts were being sent for carbons and own messages
|
||||
|
||||
## 4.0.6 (2018-12-07)
|
||||
|
||||
|
|
19
dist/converse.js
vendored
19
dist/converse.js
vendored
|
@ -62207,14 +62207,15 @@ _converse_core__WEBPACK_IMPORTED_MODULE_2__["default"].plugins.add('converse-cha
|
|||
return true;
|
||||
}
|
||||
|
||||
let from_jid = stanza.getAttribute('from');
|
||||
let from_jid = stanza.getAttribute('from'),
|
||||
is_carbon = false;
|
||||
const forwarded = stanza.querySelector('forwarded'),
|
||||
original_stanza = stanza;
|
||||
|
||||
if (!_.isNull(forwarded)) {
|
||||
const forwarded_message = forwarded.querySelector('message'),
|
||||
forwarded_from = forwarded_message.getAttribute('from'),
|
||||
is_carbon = !_.isNull(stanza.querySelector(`received[xmlns="${Strophe.NS.CARBONS}"]`));
|
||||
forwarded_from = forwarded_message.getAttribute('from');
|
||||
is_carbon = !_.isNull(stanza.querySelector(`received[xmlns="${Strophe.NS.CARBONS}"]`));
|
||||
|
||||
if (is_carbon && Strophe.getBareJidFromJid(forwarded_from) !== from_jid) {
|
||||
// Prevent message forging via carbons
|
||||
|
@ -62227,15 +62228,15 @@ _converse_core__WEBPACK_IMPORTED_MODULE_2__["default"].plugins.add('converse-cha
|
|||
to_jid = stanza.getAttribute('to');
|
||||
}
|
||||
|
||||
const requests_receipt = !_.isUndefined(sizzle(`request[xmlns="${Strophe.NS.RECEIPTS}"]`, stanza).pop());
|
||||
|
||||
if (requests_receipt) {
|
||||
this.sendReceiptStanza(from_jid, stanza.getAttribute('id'));
|
||||
}
|
||||
|
||||
const from_bare_jid = Strophe.getBareJidFromJid(from_jid),
|
||||
from_resource = Strophe.getResourceFromJid(from_jid),
|
||||
is_me = from_bare_jid === _converse.bare_jid;
|
||||
const requests_receipt = !_.isUndefined(sizzle(`request[xmlns="${Strophe.NS.RECEIPTS}"]`, stanza).pop());
|
||||
|
||||
if (requests_receipt && !is_carbon && !is_me) {
|
||||
this.sendReceiptStanza(from_jid, stanza.getAttribute('id'));
|
||||
}
|
||||
|
||||
let contact_jid;
|
||||
|
||||
if (is_me) {
|
||||
|
|
|
@ -1224,6 +1224,65 @@
|
|||
done();
|
||||
}));
|
||||
|
||||
it("carbon received does not emit a message delivery receipt",
|
||||
mock.initConverseWithPromises(
|
||||
null, ['rosterGroupsFetched', 'chatBoxesFetched'], {},
|
||||
async function (done, _converse) {
|
||||
test_utils.createContacts(_converse, 'current', 1);
|
||||
const sender_jid = mock.cur_names[0].replace(/ /g,'.').toLowerCase() + '@localhost';
|
||||
const msg_id = u.getUniqueId();
|
||||
const sent_stanzas = [];
|
||||
spyOn(_converse.chatboxes, 'sendReceiptStanza').and.callThrough();
|
||||
const msg = $msg({
|
||||
'from': sender_jid,
|
||||
'to': _converse.connection.jid,
|
||||
'type': 'chat',
|
||||
'id': u.getUniqueId(),
|
||||
}).c('received', {'xmlns': 'urn:xmpp:carbons:2'})
|
||||
.c('forwarded', {'xmlns': 'urn:xmpp:forward:0'})
|
||||
.c('message', {
|
||||
'xmlns': 'jabber:client',
|
||||
'from': sender_jid,
|
||||
'to': _converse.bare_jid+'/another-resource',
|
||||
'type': 'chat',
|
||||
'id': msg_id
|
||||
}).c('body').t('Message!').up()
|
||||
.c('request', {'xmlns': Strophe.NS.RECEIPTS}).tree();
|
||||
_converse.chatboxes.onMessage(msg);
|
||||
await test_utils.waitUntil(() => _converse.api.chats.get().length);
|
||||
expect(_converse.chatboxes.sendReceiptStanza).not.toHaveBeenCalled();
|
||||
done();
|
||||
}));
|
||||
|
||||
it("forwarded does not emit a message delivery receipt if it's mine",
|
||||
mock.initConverseWithPromises(
|
||||
null, ['rosterGroupsFetched', 'chatBoxesFetched'], {},
|
||||
async function (done, _converse) {
|
||||
test_utils.createContacts(_converse, 'current', 1);
|
||||
const recipient_jid = mock.cur_names[0].replace(/ /g,'.').toLowerCase() + '@localhost';
|
||||
const msg_id = u.getUniqueId();
|
||||
const sent_stanzas = [];
|
||||
spyOn(_converse.chatboxes, 'sendReceiptStanza').and.callThrough();
|
||||
const msg = $msg({
|
||||
'from': converse.bare_jid,
|
||||
'to': _converse.connection.jid,
|
||||
'type': 'chat',
|
||||
'id': u.getUniqueId(),
|
||||
}).c('forwarded', {'xmlns': 'urn:xmpp:forward:0'})
|
||||
.c('message', {
|
||||
'xmlns': 'jabber:client',
|
||||
'from': _converse.bare_jid+'/another-resource',
|
||||
'to': recipient_jid,
|
||||
'type': 'chat',
|
||||
'id': msg_id
|
||||
}).c('body').t('Message!').up()
|
||||
.c('request', {'xmlns': Strophe.NS.RECEIPTS}).tree();
|
||||
_converse.chatboxes.onMessage(msg);
|
||||
await test_utils.waitUntil(() => _converse.api.chats.get().length);
|
||||
expect(_converse.chatboxes.sendReceiptStanza).not.toHaveBeenCalled();
|
||||
done();
|
||||
}));
|
||||
|
||||
it("delivery can be acknowledged by a receipt",
|
||||
mock.initConverseWithPromises(
|
||||
null, ['rosterGroupsFetched', 'chatBoxesFetched'], {},
|
||||
|
|
|
@ -746,14 +746,15 @@ converse.plugins.add('converse-chatboxes', {
|
|||
return true;
|
||||
}
|
||||
|
||||
let from_jid = stanza.getAttribute('from');
|
||||
let from_jid = stanza.getAttribute('from'),
|
||||
is_carbon = false;
|
||||
const forwarded = stanza.querySelector('forwarded'),
|
||||
original_stanza = stanza;
|
||||
|
||||
if (!_.isNull(forwarded)) {
|
||||
const forwarded_message = forwarded.querySelector('message'),
|
||||
forwarded_from = forwarded_message.getAttribute('from'),
|
||||
is_carbon = !_.isNull(stanza.querySelector(`received[xmlns="${Strophe.NS.CARBONS}"]`));
|
||||
forwarded_from = forwarded_message.getAttribute('from');
|
||||
is_carbon = !_.isNull(stanza.querySelector(`received[xmlns="${Strophe.NS.CARBONS}"]`));
|
||||
|
||||
if (is_carbon && Strophe.getBareJidFromJid(forwarded_from) !== from_jid) {
|
||||
// Prevent message forging via carbons
|
||||
|
@ -765,15 +766,15 @@ converse.plugins.add('converse-chatboxes', {
|
|||
to_jid = stanza.getAttribute('to');
|
||||
}
|
||||
|
||||
const requests_receipt = !_.isUndefined(sizzle(`request[xmlns="${Strophe.NS.RECEIPTS}"]`, stanza).pop());
|
||||
if (requests_receipt) {
|
||||
this.sendReceiptStanza(from_jid, stanza.getAttribute('id'));
|
||||
}
|
||||
|
||||
const from_bare_jid = Strophe.getBareJidFromJid(from_jid),
|
||||
from_resource = Strophe.getResourceFromJid(from_jid),
|
||||
is_me = from_bare_jid === _converse.bare_jid;
|
||||
|
||||
const requests_receipt = !_.isUndefined(sizzle(`request[xmlns="${Strophe.NS.RECEIPTS}"]`, stanza).pop());
|
||||
if (requests_receipt && !is_carbon && !is_me) {
|
||||
this.sendReceiptStanza(from_jid, stanza.getAttribute('id'));
|
||||
}
|
||||
|
||||
let contact_jid;
|
||||
if (is_me) {
|
||||
// I am the sender, so this must be a forwarded message...
|
||||
|
|
Loading…
Reference in New Issue
Block a user