Commit 5b4ce87a authored by JC Brand's avatar JC Brand

Don't send out receipts or markers for MAM messages

Eventually we need to add better support for receipts and markers of MAM
messages.

We'll need to do the following:

* First check whether the MAM page already contains the receipts or markers, to avoid duplication
* Only ever in catchup mode
* Only after full catchup to ensure that the receipt is not in a different page than the message
parent 76bff83c
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
- Upgrade to Backbone 1.4.0 - Upgrade to Backbone 1.4.0
- Fix "flashing" of roster filter when you have less than 5 roster contacts. - Fix "flashing" of roster filter when you have less than 5 roster contacts.
- Fix handling of CAPTCHAs offered by ejabberd. - Fix handling of CAPTCHAs offered by ejabberd.
- Don't send out receipts or markers for MAM messages
- Allow setting of debug mode via URL with `/#converse?debug=true` - Allow setting of debug mode via URL with `/#converse?debug=true`
- New config setting [locked_muc_domain](https://conversejs.org/docs/html/configuration.html#locked-muc-domain) - New config setting [locked_muc_domain](https://conversejs.org/docs/html/configuration.html#locked-muc-domain)
- New config setting [show_client_info](https://conversejs.org/docs/html/configuration.html#show-client-info) - New config setting [show_client_info](https://conversejs.org/docs/html/configuration.html#show-client-info)
......
...@@ -62009,7 +62009,7 @@ _converse_core__WEBPACK_IMPORTED_MODULE_2__["default"].plugins.add('converse-cha ...@@ -62009,7 +62009,7 @@ _converse_core__WEBPACK_IMPORTED_MODULE_2__["default"].plugins.add('converse-cha
_converse.api.send(stanza); _converse.api.send(stanza);
}, },
handleChatMarker(stanza, from_jid, is_carbon, is_roster_contact) { handleChatMarker(stanza, from_jid, is_carbon, is_roster_contact, is_mam) {
const to_bare_jid = Strophe.getBareJidFromJid(stanza.getAttribute('to')); const to_bare_jid = Strophe.getBareJidFromJid(stanza.getAttribute('to'));
if (to_bare_jid !== _converse.bare_jid) { if (to_bare_jid !== _converse.bare_jid) {
...@@ -62030,7 +62030,7 @@ _converse_core__WEBPACK_IMPORTED_MODULE_2__["default"].plugins.add('converse-cha ...@@ -62030,7 +62030,7 @@ _converse_core__WEBPACK_IMPORTED_MODULE_2__["default"].plugins.add('converse-cha
const marker = markers.pop(); const marker = markers.pop();
if (marker.nodeName === 'markable') { if (marker.nodeName === 'markable') {
if (is_roster_contact && !is_carbon) { if (is_roster_contact && !is_carbon && !is_mam) {
this.sendMarker(from_jid, stanza.getAttribute('id'), 'received'); this.sendMarker(from_jid, stanza.getAttribute('id'), 'received');
} }
...@@ -62069,7 +62069,7 @@ _converse_core__WEBPACK_IMPORTED_MODULE_2__["default"].plugins.add('converse-cha ...@@ -62069,7 +62069,7 @@ _converse_core__WEBPACK_IMPORTED_MODULE_2__["default"].plugins.add('converse-cha
_converse.api.send(receipt_stanza); _converse.api.send(receipt_stanza);
}, },
handleReceipt(stanza, from_jid, is_carbon, is_me) { handleReceipt(stanza, from_jid, is_carbon, is_me, is_mam) {
const requests_receipt = !_.isUndefined(sizzle(`request[xmlns="${Strophe.NS.RECEIPTS}"]`, stanza).pop()); const requests_receipt = !_.isUndefined(sizzle(`request[xmlns="${Strophe.NS.RECEIPTS}"]`, stanza).pop());
if (requests_receipt && !is_carbon && !is_me) { if (requests_receipt && !is_carbon && !is_me) {
...@@ -62590,7 +62590,8 @@ _converse_core__WEBPACK_IMPORTED_MODULE_2__["default"].plugins.add('converse-cha ...@@ -62590,7 +62590,8 @@ _converse_core__WEBPACK_IMPORTED_MODULE_2__["default"].plugins.add('converse-cha
} }
let from_jid = stanza.getAttribute('from'), let from_jid = stanza.getAttribute('from'),
is_carbon = false; is_carbon = false,
is_mam = false;
const forwarded = stanza.querySelector('forwarded'), const forwarded = stanza.querySelector('forwarded'),
original_stanza = stanza; original_stanza = stanza;
...@@ -62598,6 +62599,7 @@ _converse_core__WEBPACK_IMPORTED_MODULE_2__["default"].plugins.add('converse-cha ...@@ -62598,6 +62599,7 @@ _converse_core__WEBPACK_IMPORTED_MODULE_2__["default"].plugins.add('converse-cha
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}"]`));
is_mam = sizzle(`message > result[xmlns="${Strophe.NS.MAM}"]`, stanza).length > 0;
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
...@@ -62647,7 +62649,7 @@ _converse_core__WEBPACK_IMPORTED_MODULE_2__["default"].plugins.add('converse-cha ...@@ -62647,7 +62649,7 @@ _converse_core__WEBPACK_IMPORTED_MODULE_2__["default"].plugins.add('converse-cha
chatbox.updateMessage(message, original_stanza); chatbox.updateMessage(message, original_stanza);
} }
if (!message && !chatbox.handleMessageCorrection(stanza) && !chatbox.handleReceipt(stanza, from_jid, is_carbon, is_me) && !chatbox.handleChatMarker(stanza, from_jid, is_carbon, is_roster_contact)) { if (!message && !chatbox.handleMessageCorrection(stanza) && !chatbox.handleReceipt(stanza, from_jid, is_carbon, is_me, is_mam) && !chatbox.handleChatMarker(stanza, from_jid, is_carbon, is_roster_contact, is_mam)) {
const attrs = await chatbox.getMessageAttributesFromStanza(stanza, original_stanza); const attrs = await chatbox.getMessageAttributesFromStanza(stanza, original_stanza);
if (attrs['chat_state'] || !u.isEmptyMessage(attrs)) { if (attrs['chat_state'] || !u.isEmptyMessage(attrs)) {
...@@ -95747,7 +95749,7 @@ _headless_utils_core__WEBPACK_IMPORTED_MODULE_16__["default"].isImageURL = funct ...@@ -95747,7 +95749,7 @@ _headless_utils_core__WEBPACK_IMPORTED_MODULE_16__["default"].isImageURL = funct
const filename = url.filename().toLowerCase(); const filename = url.filename().toLowerCase();
if (url.protocol().toLowerCase() !== "https") { if (window.location.protocol === 'https:' && url.protocol().toLowerCase() !== "https") {
return false; return false;
} }
...@@ -370,7 +370,7 @@ converse.plugins.add('converse-chatboxes', { ...@@ -370,7 +370,7 @@ converse.plugins.add('converse-chatboxes', {
_converse.api.send(stanza); _converse.api.send(stanza);
}, },
handleChatMarker (stanza, from_jid, is_carbon, is_roster_contact) { handleChatMarker (stanza, from_jid, is_carbon, is_roster_contact, is_mam) {
const to_bare_jid = Strophe.getBareJidFromJid(stanza.getAttribute('to')); const to_bare_jid = Strophe.getBareJidFromJid(stanza.getAttribute('to'));
if (to_bare_jid !== _converse.bare_jid) { if (to_bare_jid !== _converse.bare_jid) {
return false; return false;
...@@ -388,7 +388,7 @@ converse.plugins.add('converse-chatboxes', { ...@@ -388,7 +388,7 @@ converse.plugins.add('converse-chatboxes', {
} else { } else {
const marker = markers.pop(); const marker = markers.pop();
if (marker.nodeName === 'markable') { if (marker.nodeName === 'markable') {
if (is_roster_contact && !is_carbon) { if (is_roster_contact && !is_carbon && !is_mam) {
this.sendMarker(from_jid, stanza.getAttribute('id'), 'received'); this.sendMarker(from_jid, stanza.getAttribute('id'), 'received');
} }
return false; return false;
...@@ -416,7 +416,7 @@ converse.plugins.add('converse-chatboxes', { ...@@ -416,7 +416,7 @@ converse.plugins.add('converse-chatboxes', {
_converse.api.send(receipt_stanza); _converse.api.send(receipt_stanza);
}, },
handleReceipt (stanza, from_jid, is_carbon, is_me) { handleReceipt (stanza, from_jid, is_carbon, is_me, is_mam) {
const requests_receipt = !_.isUndefined(sizzle(`request[xmlns="${Strophe.NS.RECEIPTS}"]`, stanza).pop()); const requests_receipt = !_.isUndefined(sizzle(`request[xmlns="${Strophe.NS.RECEIPTS}"]`, stanza).pop());
if (requests_receipt && !is_carbon && !is_me) { if (requests_receipt && !is_carbon && !is_me) {
this.sendReceiptStanza(from_jid, stanza.getAttribute('id')); this.sendReceiptStanza(from_jid, stanza.getAttribute('id'));
...@@ -882,7 +882,9 @@ converse.plugins.add('converse-chatboxes', { ...@@ -882,7 +882,9 @@ converse.plugins.add('converse-chatboxes', {
} }
let from_jid = stanza.getAttribute('from'), let from_jid = stanza.getAttribute('from'),
is_carbon = false; is_carbon = false,
is_mam = false;
const forwarded = stanza.querySelector('forwarded'), const forwarded = stanza.querySelector('forwarded'),
original_stanza = stanza; original_stanza = stanza;
...@@ -890,6 +892,7 @@ converse.plugins.add('converse-chatboxes', { ...@@ -890,6 +892,7 @@ converse.plugins.add('converse-chatboxes', {
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}"]`));
is_mam = sizzle(`message > result[xmlns="${Strophe.NS.MAM}"]`, stanza).length > 0;
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
...@@ -936,8 +939,8 @@ converse.plugins.add('converse-chatboxes', { ...@@ -936,8 +939,8 @@ converse.plugins.add('converse-chatboxes', {
} }
if (!message && if (!message &&
!chatbox.handleMessageCorrection(stanza) && !chatbox.handleMessageCorrection(stanza) &&
!chatbox.handleReceipt (stanza, from_jid, is_carbon, is_me) && !chatbox.handleReceipt (stanza, from_jid, is_carbon, is_me, is_mam) &&
!chatbox.handleChatMarker(stanza, from_jid, is_carbon, is_roster_contact)) { !chatbox.handleChatMarker(stanza, from_jid, is_carbon, is_roster_contact, is_mam)) {
const attrs = await chatbox.getMessageAttributesFromStanza(stanza, original_stanza); const attrs = await chatbox.getMessageAttributesFromStanza(stanza, original_stanza);
if (attrs['chat_state'] || !u.isEmptyMessage(attrs)) { if (attrs['chat_state'] || !u.isEmptyMessage(attrs)) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment