diff --git a/CHANGES.md b/CHANGES.md index 0537064e5..59100f712 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -19,6 +19,7 @@ - #1352: Add [Jed](https://github.com/messageformat/Jed) as dependency of `@converse/headless` - #1373: Re-add support for the [muc_domain](https://conversejs.org/docs/html/configuration.html#muc-domain) setting - #1400: When a chat message is just an emoji, enlarge the emoji +- #1407: Silent errors when trying to use whitespace as MUC nickname - #1437: List of groupchats in modal doesn't scroll - #1457: Wrong tooltip shown for "unbookmark" icon - #1479: Allow file upload by drag & drop also in MUCs diff --git a/dist/converse.js b/dist/converse.js index e3cb80955..0963a06a5 100644 --- a/dist/converse.js +++ b/dist/converse.js @@ -54112,11 +54112,10 @@ _converse_headless_converse_core__WEBPACK_IMPORTED_MODULE_6__["default"].plugins } return templates_add_chatroom_modal_html__WEBPACK_IMPORTED_MODULE_8___default()(_.extend(this.model.toJSON(), { - 'heading_new_chatroom': __('Enter a new Groupchat'), + '__': _converse.__, + '_converse': _converse, 'label_room_address': _converse.muc_domain ? __('Groupchat name') : __('Groupchat address'), - 'label_nickname': __('Optional nickname'), - 'chatroom_placeholder': placeholder, - 'label_join': __('Join') + 'chatroom_placeholder': placeholder })); }, @@ -54132,7 +54131,7 @@ _converse_headless_converse_core__WEBPACK_IMPORTED_MODULE_6__["default"].plugins this.model.save('muc_domain', Strophe.getDomainFromJid(jid)); return { 'jid': jid, - 'nick': data.get('nickname') + 'nick': data.get('nickname').trim() }; }, @@ -92537,17 +92536,19 @@ var _ = {escape:__webpack_require__(/*! ./node_modules/lodash/escape.js */ "./no module.exports = function(o) { var __t, __p = '', __e = _.escape; __p += '\n\n'; return __p }; diff --git a/spec/muc.js b/spec/muc.js index 4432748bb..e84d4041c 100644 --- a/spec/muc.js +++ b/spec/muc.js @@ -3972,9 +3972,10 @@ expect(name_input.placeholder).toBe('name@conference.example.org'); const label_nick = modal.el.querySelector('label[for="nickname"]'); - expect(label_nick.textContent).toBe('Optional nickname:'); + expect(label_nick.textContent).toBe('Nickname:'); const nick_input = modal.el.querySelector('input[name="nickname"]'); expect(nick_input.value).toBe(''); + nick_input.value = 'dummy'; expect(modal.el.querySelector('.modal-title').textContent).toBe('Enter a new Groupchat'); spyOn(_converse.ChatRoom.prototype, 'getRoomFeatures').and.callFake(() => Promise.resolve()); @@ -4006,7 +4007,7 @@ const modal = roomspanel.add_room_modal; await test_utils.waitUntil(() => u.isVisible(modal.el), 1000) const label_nick = modal.el.querySelector('label[for="nickname"]'); - expect(label_nick.textContent).toBe('Optional nickname:'); + expect(label_nick.textContent).toBe('Nickname:'); const nick_input = modal.el.querySelector('input[name="nickname"]'); expect(nick_input.value).toBe('dummy'); done(); @@ -4026,7 +4027,7 @@ const modal = roomspanel.add_room_modal; await test_utils.waitUntil(() => u.isVisible(modal.el), 1000) const label_nick = modal.el.querySelector('label[for="nickname"]'); - expect(label_nick.textContent).toBe('Optional nickname:'); + expect(label_nick.textContent).toBe('Nickname:'); const nick_input = modal.el.querySelector('input[name="nickname"]'); expect(nick_input.value).toBe('st.nick'); done(); @@ -4050,6 +4051,9 @@ let name_input = modal.el.querySelector('input[name="chatroom"]'); expect(name_input.placeholder).toBe('name@muc.example.org'); name_input.value = 'lounge'; + let nick_input = modal.el.querySelector('input[name="nickname"]'); + nick_input.value = 'max'; + modal.el.querySelector('form input[type="submit"]').click(); await test_utils.waitUntil(() => _converse.chatboxes.length); await test_utils.waitUntil(() => sizzle('.chatroom', _converse.el).filter(u.isVisible).length === 1); @@ -4060,6 +4064,8 @@ await test_utils.waitUntil(() => u.isVisible(modal.el), 1000); name_input = modal.el.querySelector('input[name="chatroom"]'); name_input.value = 'lounge@conference.example.org'; + nick_input = modal.el.querySelector('input[name="nickname"]'); + nick_input.value = 'max'; modal.el.querySelector('form input[type="submit"]').click(); await test_utils.waitUntil(() => _converse.chatboxes.models.filter(c => c.get('type') === 'chatroom').length === 2); await test_utils.waitUntil(() => sizzle('.chatroom', _converse.el).filter(u.isVisible).length === 2); @@ -4085,6 +4091,8 @@ let name_input = modal.el.querySelector('input[name="chatroom"]'); expect(name_input.placeholder).toBe(''); name_input.value = 'lounge'; + let nick_input = modal.el.querySelector('input[name="nickname"]'); + nick_input.value = 'max'; modal.el.querySelector('form input[type="submit"]').click(); await test_utils.waitUntil(() => _converse.chatboxes.length); await test_utils.waitUntil(() => sizzle('.chatroom', _converse.el).filter(u.isVisible).length === 1); @@ -4095,6 +4103,8 @@ await test_utils.waitUntil(() => u.isVisible(modal.el), 1000); name_input = modal.el.querySelector('input[name="chatroom"]'); name_input.value = 'lounge@conference'; + nick_input = modal.el.querySelector('input[name="nickname"]'); + nick_input.value = 'max'; modal.el.querySelector('form input[type="submit"]').click(); await test_utils.waitUntil(() => _converse.chatboxes.models.filter(c => c.get('type') === 'chatroom').length === 2); await test_utils.waitUntil(() => sizzle('.chatroom', _converse.el).filter(u.isVisible).length === 2); diff --git a/src/converse-muc-views.js b/src/converse-muc-views.js index 9b756a7b4..a222f413b 100644 --- a/src/converse-muc-views.js +++ b/src/converse-muc-views.js @@ -412,11 +412,10 @@ converse.plugins.add('converse-muc-views', { placeholder = muc_domain ? `name@${muc_domain}` : __('name@conference.example.org'); } return tpl_add_chatroom_modal(_.extend(this.model.toJSON(), { - 'heading_new_chatroom': __('Enter a new Groupchat'), + '__': _converse.__, + '_converse': _converse, 'label_room_address': _converse.muc_domain ? __('Groupchat name') : __('Groupchat address'), - 'label_nickname': __('Optional nickname'), - 'chatroom_placeholder': placeholder, - 'label_join': __('Join'), + 'chatroom_placeholder': placeholder })); }, @@ -432,7 +431,7 @@ converse.plugins.add('converse-muc-views', { this.model.save('muc_domain', Strophe.getDomainFromJid(jid)); return { 'jid': jid, - 'nick': data.get('nickname') + 'nick': data.get('nickname').trim() } }, diff --git a/src/templates/add_chatroom_modal.html b/src/templates/add_chatroom_modal.html index 363fa5956..2a9ea2378 100644 --- a/src/templates/add_chatroom_modal.html +++ b/src/templates/add_chatroom_modal.html @@ -3,7 +3,7 @@ diff --git a/tests/utils.js b/tests/utils.js index b01f2841c..90ae884b2 100644 --- a/tests/utils.js +++ b/tests/utils.js @@ -106,7 +106,9 @@ const modal = roomspanel.add_room_modal; await utils.waitUntil(() => u.isVisible(modal.el), 1500) modal.el.querySelector('input[name="chatroom"]').value = jid; - modal.el.querySelector('input[name="nickname"]').value = nick; + if (nick) { + modal.el.querySelector('input[name="nickname"]').value = nick; + } modal.el.querySelector('form input[type="submit"]').click(); await utils.waitUntil(() => _converse.chatboxviews.get(jid), 1000); return _converse.chatboxviews.get(jid);