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
|
- Bugfix: MUC commands were being ignored
|
||||||
- UI: Always show the OMEMO lock icon (grayed out if not available).
|
- 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
|
- #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)
|
## 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;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
let from_jid = stanza.getAttribute('from');
|
let from_jid = stanza.getAttribute('from'),
|
||||||
|
is_carbon = false;
|
||||||
const forwarded = stanza.querySelector('forwarded'),
|
const forwarded = stanza.querySelector('forwarded'),
|
||||||
original_stanza = stanza;
|
original_stanza = stanza;
|
||||||
|
|
||||||
if (!_.isNull(forwarded)) {
|
if (!_.isNull(forwarded)) {
|
||||||
const forwarded_message = forwarded.querySelector('message'),
|
const forwarded_message = forwarded.querySelector('message'),
|
||||||
forwarded_from = forwarded_message.getAttribute('from'),
|
forwarded_from = forwarded_message.getAttribute('from');
|
||||||
is_carbon = !_.isNull(stanza.querySelector(`received[xmlns="${Strophe.NS.CARBONS}"]`));
|
is_carbon = !_.isNull(stanza.querySelector(`received[xmlns="${Strophe.NS.CARBONS}"]`));
|
||||||
|
|
||||||
if (is_carbon && Strophe.getBareJidFromJid(forwarded_from) !== from_jid) {
|
if (is_carbon && Strophe.getBareJidFromJid(forwarded_from) !== from_jid) {
|
||||||
// Prevent message forging via carbons
|
// 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');
|
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),
|
const from_bare_jid = Strophe.getBareJidFromJid(from_jid),
|
||||||
from_resource = Strophe.getResourceFromJid(from_jid),
|
from_resource = Strophe.getResourceFromJid(from_jid),
|
||||||
is_me = from_bare_jid === _converse.bare_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;
|
let contact_jid;
|
||||||
|
|
||||||
if (is_me) {
|
if (is_me) {
|
||||||
|
|
|
@ -1224,6 +1224,65 @@
|
||||||
done();
|
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",
|
it("delivery can be acknowledged by a receipt",
|
||||||
mock.initConverseWithPromises(
|
mock.initConverseWithPromises(
|
||||||
null, ['rosterGroupsFetched', 'chatBoxesFetched'], {},
|
null, ['rosterGroupsFetched', 'chatBoxesFetched'], {},
|
||||||
|
|
|
@ -746,14 +746,15 @@ converse.plugins.add('converse-chatboxes', {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
let from_jid = stanza.getAttribute('from');
|
let from_jid = stanza.getAttribute('from'),
|
||||||
|
is_carbon = false;
|
||||||
const forwarded = stanza.querySelector('forwarded'),
|
const forwarded = stanza.querySelector('forwarded'),
|
||||||
original_stanza = stanza;
|
original_stanza = stanza;
|
||||||
|
|
||||||
if (!_.isNull(forwarded)) {
|
if (!_.isNull(forwarded)) {
|
||||||
const forwarded_message = forwarded.querySelector('message'),
|
const forwarded_message = forwarded.querySelector('message'),
|
||||||
forwarded_from = forwarded_message.getAttribute('from'),
|
forwarded_from = forwarded_message.getAttribute('from');
|
||||||
is_carbon = !_.isNull(stanza.querySelector(`received[xmlns="${Strophe.NS.CARBONS}"]`));
|
is_carbon = !_.isNull(stanza.querySelector(`received[xmlns="${Strophe.NS.CARBONS}"]`));
|
||||||
|
|
||||||
if (is_carbon && Strophe.getBareJidFromJid(forwarded_from) !== from_jid) {
|
if (is_carbon && Strophe.getBareJidFromJid(forwarded_from) !== from_jid) {
|
||||||
// Prevent message forging via carbons
|
// Prevent message forging via carbons
|
||||||
|
@ -765,15 +766,15 @@ converse.plugins.add('converse-chatboxes', {
|
||||||
to_jid = stanza.getAttribute('to');
|
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),
|
const from_bare_jid = Strophe.getBareJidFromJid(from_jid),
|
||||||
from_resource = Strophe.getResourceFromJid(from_jid),
|
from_resource = Strophe.getResourceFromJid(from_jid),
|
||||||
is_me = from_bare_jid === _converse.bare_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;
|
let contact_jid;
|
||||||
if (is_me) {
|
if (is_me) {
|
||||||
// I am the sender, so this must be a forwarded message...
|
// I am the sender, so this must be a forwarded message...
|
||||||
|
|
Loading…
Reference in New Issue
Block a user