diff --git a/CHANGES.md b/CHANGES.md index 84eacbbfa..92adad916 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -6,6 +6,7 @@ - Upgrade to Backbone 1.4.0 - Fix "flashing" of roster filter when you have less than 5 roster contacts. - 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` - 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) diff --git a/dist/converse.js b/dist/converse.js index 5d5aefe59..fb5aaea0e 100644 --- a/dist/converse.js +++ b/dist/converse.js @@ -62009,7 +62009,7 @@ _converse_core__WEBPACK_IMPORTED_MODULE_2__["default"].plugins.add('converse-cha _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')); if (to_bare_jid !== _converse.bare_jid) { @@ -62030,7 +62030,7 @@ _converse_core__WEBPACK_IMPORTED_MODULE_2__["default"].plugins.add('converse-cha const marker = markers.pop(); 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'); } @@ -62069,7 +62069,7 @@ _converse_core__WEBPACK_IMPORTED_MODULE_2__["default"].plugins.add('converse-cha _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()); if (requests_receipt && !is_carbon && !is_me) { @@ -62590,7 +62590,8 @@ _converse_core__WEBPACK_IMPORTED_MODULE_2__["default"].plugins.add('converse-cha } let from_jid = stanza.getAttribute('from'), - is_carbon = false; + is_carbon = false, + is_mam = false; const forwarded = stanza.querySelector('forwarded'), original_stanza = stanza; @@ -62598,6 +62599,7 @@ _converse_core__WEBPACK_IMPORTED_MODULE_2__["default"].plugins.add('converse-cha const forwarded_message = forwarded.querySelector('message'), forwarded_from = forwarded_message.getAttribute('from'); 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) { // Prevent message forging via carbons @@ -62647,7 +62649,7 @@ _converse_core__WEBPACK_IMPORTED_MODULE_2__["default"].plugins.add('converse-cha 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); if (attrs['chat_state'] || !u.isEmptyMessage(attrs)) { @@ -95747,7 +95749,7 @@ _headless_utils_core__WEBPACK_IMPORTED_MODULE_16__["default"].isImageURL = funct const filename = url.filename().toLowerCase(); - if (url.protocol().toLowerCase() !== "https") { + if (window.location.protocol === 'https:' && url.protocol().toLowerCase() !== "https") { return false; } diff --git a/src/headless/converse-chatboxes.js b/src/headless/converse-chatboxes.js index 8de3c86b1..1baa25adb 100644 --- a/src/headless/converse-chatboxes.js +++ b/src/headless/converse-chatboxes.js @@ -370,7 +370,7 @@ converse.plugins.add('converse-chatboxes', { _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')); if (to_bare_jid !== _converse.bare_jid) { return false; @@ -388,7 +388,7 @@ converse.plugins.add('converse-chatboxes', { } else { const marker = markers.pop(); 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'); } return false; @@ -416,7 +416,7 @@ converse.plugins.add('converse-chatboxes', { _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()); if (requests_receipt && !is_carbon && !is_me) { this.sendReceiptStanza(from_jid, stanza.getAttribute('id')); @@ -882,7 +882,9 @@ converse.plugins.add('converse-chatboxes', { } let from_jid = stanza.getAttribute('from'), - is_carbon = false; + is_carbon = false, + is_mam = false; + const forwarded = stanza.querySelector('forwarded'), original_stanza = stanza; @@ -890,6 +892,7 @@ converse.plugins.add('converse-chatboxes', { const forwarded_message = forwarded.querySelector('message'), forwarded_from = forwarded_message.getAttribute('from'); 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) { // Prevent message forging via carbons @@ -936,8 +939,8 @@ converse.plugins.add('converse-chatboxes', { } if (!message && !chatbox.handleMessageCorrection(stanza) && - !chatbox.handleReceipt (stanza, from_jid, is_carbon, is_me) && - !chatbox.handleChatMarker(stanza, from_jid, is_carbon, is_roster_contact)) { + !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); if (attrs['chat_state'] || !u.isEmptyMessage(attrs)) {