Browse Source

Use nickname from global settings when entering a room

JC Brand 7 years ago
parent
commit
27bc33ba09
5 changed files with 24 additions and 7 deletions
  1. 13 0
      spec/chatroom.js
  2. 1 1
      src/converse-core.js
  3. 4 0
      src/converse-muc-views.js
  4. 1 1
      src/converse-muc.js
  5. 5 5
      tests/utils.js

+ 13 - 0
spec/chatroom.js

@@ -2659,6 +2659,19 @@
 
 
         describe("When attempting to enter a groupchat", function () {
         describe("When attempting to enter a groupchat", function () {
 
 
+            it("will use the nickname set in the global settings if the user doesn't have a VCard nickname",
+                mock.initConverseWithPromises(
+                    null, ['rosterGroupsFetched', 'chatBoxesFetched'], {'nickname': 'Benedict-Cucumberpatch'},
+                    function (done, _converse) {
+
+                test_utils.openChatRoomViaModal(_converse, 'problematic@muc.localhost')
+                .then(function () {
+                    const view = _converse.chatboxviews.get('problematic@muc.localhost');
+                    expect(view.model.get('nick')).toBe('Benedict-Cucumberpatch');
+                    done();
+                }).catch(_.partial(console.error, _));
+            }));
+
             it("will show an error message if the groupchat requires a password",
             it("will show an error message if the groupchat requires a password",
                 mock.initConverseWithPromises(
                 mock.initConverseWithPromises(
                     null, ['rosterGroupsFetched', 'chatBoxesFetched'], {},
                     null, ['rosterGroupsFetched', 'chatBoxesFetched'], {},

+ 1 - 1
src/converse-core.js

@@ -812,7 +812,7 @@
             defaults () {
             defaults () {
                 return {
                 return {
                     "jid": _converse.bare_jid,
                     "jid": _converse.bare_jid,
-                    "status":  _converse.default_state,
+                    "status":  _converse.default_state
                 }
                 }
             },
             },
 
 

+ 4 - 0
src/converse-muc-views.js

@@ -477,6 +477,10 @@
                 openChatRoom (ev) {
                 openChatRoom (ev) {
                     ev.preventDefault();
                     ev.preventDefault();
                     const data = this.parseRoomDataFromEvent(ev.target);
                     const data = this.parseRoomDataFromEvent(ev.target);
+                    if (data.nick === "") {
+                        // Make sure defaults apply if no nick is provided.
+                        data.nick = undefined;
+                    }
                     _converse.api.rooms.open(data.jid, data);
                     _converse.api.rooms.open(data.jid, data);
                     this.modal.hide();
                     this.modal.hide();
                     ev.target.reset();
                     ev.target.reset();

+ 1 - 1
src/converse-muc.js

@@ -171,7 +171,7 @@
                           'affiliation': null,
                           'affiliation': null,
                           'connection_status': converse.ROOMSTATUS.DISCONNECTED,
                           'connection_status': converse.ROOMSTATUS.DISCONNECTED,
                           'name': '',
                           'name': '',
-                          'nick': _converse.xmppstatus.get('nickname'),
+                          'nick': _converse.xmppstatus.get('nickname') || _converse.nickname,
                           'description': '',
                           'description': '',
                           'features_fetched': false,
                           'features_fetched': false,
                           'roomconfig': {},
                           'roomconfig': {},

+ 5 - 5
tests/utils.js

@@ -103,18 +103,18 @@
         return utils.waitUntil(() => _converse.chatboxviews.get(jid));
         return utils.waitUntil(() => _converse.chatboxviews.get(jid));
     };
     };
 
 
-    utils.openChatRoomViaModal = function (_converse, jid, nick) {
+    utils.openChatRoomViaModal = function (_converse, jid, nick='') {
         // Opens a new chatroom
         // Opens a new chatroom
         return new Promise(function (resolve, reject) {
         return new Promise(function (resolve, reject) {
             utils.openControlBox(_converse);
             utils.openControlBox(_converse);
-            var roomspanel = _converse.chatboxviews.get('controlbox').roomspanel;
+            const roomspanel = _converse.chatboxviews.get('controlbox').roomspanel;
             roomspanel.el.querySelector('.show-add-muc-modal').click();
             roomspanel.el.querySelector('.show-add-muc-modal').click();
             utils.closeControlBox(_converse);
             utils.closeControlBox(_converse);
             const modal = roomspanel.add_room_modal;
             const modal = roomspanel.add_room_modal;
-            utils.waitUntil(function () {
-                return u.isVisible(modal.el);
-            }, 1000).then(function () {
+            utils.waitUntil(() => u.isVisible(modal.el), 1000)
+            .then(() => {
                 modal.el.querySelector('input[name="chatroom"]').value = jid;
                 modal.el.querySelector('input[name="chatroom"]').value = jid;
+                modal.el.querySelector('input[name="nickname"]').value = nick;
                 modal.el.querySelector('form input[type="submit"]').click();
                 modal.el.querySelector('form input[type="submit"]').click();
                 resolve();
                 resolve();
             }).catch(_.partial(console.error, _));
             }).catch(_.partial(console.error, _));