Ver código fonte

Use real JID in XEP-0372 references only when the MUC is non-anonymous

JC Brand 4 anos atrás
pai
commit
3f47c4d3dd
4 arquivos alterados com 36 adições e 7 exclusões
  1. 1 0
      CHANGES.md
  2. 33 5
      spec/mentions.js
  3. 1 1
      src/headless/plugins/muc/muc.js
  4. 1 1
      webpack.common.js

+ 1 - 0
CHANGES.md

@@ -5,6 +5,7 @@
 - #1083: Add support for XEP-0393 Message Styling
 - #2275: Allow punctuation to immediately precede a mention
 - Add support for XEP-0437 Room Activity Indicators see [muc-subscribe-to-rai](https://conversejs.org/docs/html/configuration.html#muc-subscribe-to-rai)
+- Bugfix: Use real JID in XEP-0372 references only when the MUC is non-anonymous
 - Bugfix: Connection protocol not updated based on XEP-0156 connection methods
 - Bugfix: `null` inserted by emoji picker and can't switch between skintones
 - New hook: [getMessageActionButtons](https://conversejs.org/docs/html/api/-_converse.html#event:getMessageActionButtons)

+ 33 - 5
spec/mentions.js

@@ -138,7 +138,21 @@ describe("A sent groupchat message", function () {
                 async function (done, _converse) {
 
             const muc_jid = 'lounge@montague.lit';
-            await mock.openAndEnterChatRoom(_converse, muc_jid, 'tom');
+
+            // Making the MUC non-anonymous so that real JIDs are included
+            const features = [
+                'http://jabber.org/protocol/muc',
+                'jabber:iq:register',
+                Strophe.NS.SID,
+                Strophe.NS.MAM,
+                'muc_passwordprotected',
+                'muc_hidden',
+                'muc_temporary',
+                'muc_open',
+                'muc_unmoderated',
+                'muc_nonanonymous'
+            ];
+            await mock.openAndEnterChatRoom(_converse, muc_jid, 'tom', features);
             const view = _converse.api.chatviews.get(muc_jid);
             ['z3r0', 'mr.robot', 'gibson', 'sw0rdf1sh', 'Link Mauve', 'robot'].forEach((nick) => {
                 _converse.connection._dataRecv(mock.createRequest(
@@ -334,7 +348,21 @@ describe("A sent groupchat message", function () {
                 async function (done, _converse) {
 
             const muc_jid = 'lounge@montague.lit';
-            await mock.openAndEnterChatRoom(_converse, muc_jid, 'tom');
+
+            // Making the MUC non-anonymous so that real JIDs are included
+            const features = [
+                'http://jabber.org/protocol/muc',
+                'jabber:iq:register',
+                Strophe.NS.SID,
+                Strophe.NS.MAM,
+                'muc_passwordprotected',
+                'muc_hidden',
+                'muc_temporary',
+                'muc_open',
+                'muc_unmoderated',
+                'muc_nonanonymous'
+            ];
+            await mock.openAndEnterChatRoom(_converse, muc_jid, 'tom', features);
             const view = _converse.api.chatviews.get(muc_jid);
             ['z3r0', 'mr.robot', 'gibson', 'sw0rdf1sh'].forEach((nick) => {
                 _converse.connection._dataRecv(mock.createRequest(
@@ -455,9 +483,9 @@ describe("A sent groupchat message", function () {
                         `xmlns="jabber:client">`+
                             `<body>hello z3r0 gibson mr.robot, how are you?</body>`+
                             `<active xmlns="http://jabber.org/protocol/chatstates"/>`+
-                            `<reference begin="6" end="10" type="mention" uri="xmpp:z3r0@montague.lit" xmlns="urn:xmpp:reference:0"/>`+
-                            `<reference begin="11" end="17" type="mention" uri="xmpp:gibson@montague.lit" xmlns="urn:xmpp:reference:0"/>`+
-                            `<reference begin="18" end="26" type="mention" uri="xmpp:mr.robot@montague.lit" xmlns="urn:xmpp:reference:0"/>`+
+                            `<reference begin="6" end="10" type="mention" uri="xmpp:${muc_jid}/z3r0" xmlns="urn:xmpp:reference:0"/>`+
+                            `<reference begin="11" end="17" type="mention" uri="xmpp:${muc_jid}/gibson" xmlns="urn:xmpp:reference:0"/>`+
+                            `<reference begin="18" end="26" type="mention" uri="xmpp:${muc_jid}/mr.robot" xmlns="urn:xmpp:reference:0"/>`+
                             `<origin-id id="${msg.nodeTree.querySelector('origin-id').getAttribute("id")}" xmlns="urn:xmpp:sid:0"/>`+
                         `</message>`);
             done();

+ 1 - 1
src/headless/plugins/muc/muc.js

@@ -868,7 +868,7 @@ const ChatRoomMixin = {
         const uriFromNickname = nickname => {
             const jid = this.get('jid');
             const occupant = this.getOccupant(nickname) || this.getOccupant(jid);
-            const uri = (occupant && occupant.get('jid')) || `${jid}/${nickname}`;
+            const uri = (this.features.get('nonanonymous') && occupant?.get('jid')) || `${jid}/${nickname}`;
             return encodeURI(`xmpp:${uri}`);
         };
 

+ 1 - 1
webpack.common.js

@@ -78,7 +78,7 @@ module.exports = {
                     presets: [
                         ["@babel/preset-env", {
                             "targets": {
-                                "browsers": [">1%", "not ie 11", "not op_mini all"]
+                                "browsers": [">1%", "not ie 11", "not op_mini all", "not dead"]
                             }
                         }]
                     ],