Selaa lähdekoodia

Reregister nick when changing it in a members-only MUC

JC Brand 3 vuotta sitten
vanhempi
commit
90d93b364a
2 muutettua tiedostoa jossa 24 lisäystä ja 8 poistoa
  1. 23 0
      src/headless/plugins/muc/muc.js
  2. 1 8
      src/plugins/muc-views/utils.js

+ 23 - 0
src/headless/plugins/muc/muc.js

@@ -1403,6 +1403,29 @@ const ChatRoomMixin = {
         return this.occupants.findWhere({ 'jid': _converse.bare_jid });
     },
 
+    async setNickname (nick) {
+        this.set({ nick });
+        if (this.features.get('membersonly')) {
+            try {
+                await this.registerNickname();
+            } catch (e) {
+                const { __ } = _converse;
+                log.error(e);
+                const message = __("Error: couldn't register new nickname in members only room");
+                this.createMessage({ message, 'type': 'error' });
+                return;
+            }
+        }
+        const jid = Strophe.getBareJidFromJid(this.get('jid'));
+        api.send(
+            $pres({
+                from: _converse.connection.jid,
+                to: `${jid}/${nick}`,
+                id: u.getUniqueId()
+            }).tree()
+        )
+    },
+
     /**
      * Send an IQ stanza to modify an occupant's role
      * @private

+ 1 - 8
src/plugins/muc-views/utils.js

@@ -364,14 +364,7 @@ export function parseMessageForMUCCommands (muc, text) {
                 const message = __('Your nickname is "%1$s"', muc.get('nick'));
                 muc.createMessage({ message, 'type': 'error' });
             } else {
-                const jid = Strophe.getBareJidFromJid(muc.get('jid'));
-                api.send(
-                    $pres({
-                        from: _converse.connection.jid,
-                        to: `${jid}/${args}`,
-                        id: u.getUniqueId()
-                    }).tree()
-                );
+                muc.setNickname(args);
             }
             break;
         }