From dd0821076dc0129adcd2c17f34c2238dda93346d Mon Sep 17 00:00:00 2001 From: supun19 Date: Sat, 4 May 2019 09:45:39 +0530 Subject: [PATCH] Groupchat auto-configuration now supports list-multi fields --- CHANGES.md | 2 +- spec/muc.js | 9 +++++++++ src/headless/converse-muc.js | 11 +++++------ 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 097282df1..4b01d2b1d 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,7 +1,7 @@ # Changelog ## 5.0.0 (Unreleased) - +- Groupchat default configuration now supports `list-multi` fields - Bugfix: Don't set `muc_domain` for roomspanel if `locked_muc_domain` is `true`. - Bugfix: Modal auto-closes when you open it for a second time. - Take roster nickname into consideration when rendering messages and chat headings. diff --git a/spec/muc.js b/spec/muc.js index 326e1d3ec..0900c69a9 100644 --- a/spec/muc.js +++ b/spec/muc.js @@ -156,6 +156,7 @@ 'nick': 'some1', 'auto_configure': true, 'roomconfig': { + 'getmemberlist': ['moderator', 'participant'], 'changesubject': false, 'membersonly': true, 'persistentroom': true, @@ -224,6 +225,13 @@ + + moderator + participant + visitor + @@ -243,6 +251,7 @@ expect(sizzle('field[var="muc#roomconfig_roomname"] value', sent_stanza).pop().textContent).toBe('Room'); expect(sizzle('field[var="muc#roomconfig_roomdesc"] value', sent_stanza).pop().textContent).toBe('Welcome to this groupchat'); expect(sizzle('field[var="muc#roomconfig_persistentroom"] value', sent_stanza).pop().textContent).toBe('1'); + expect(sizzle('field[var="muc#roomconfig_getmemberlist"] value', sent_stanza).map(e => e.textContent).join(' ')).toBe('moderator participant'); expect(sizzle('field[var="muc#roomconfig_publicroom"] value ', sent_stanza).pop().textContent).toBe('1'); expect(sizzle('field[var="muc#roomconfig_changesubject"] value', sent_stanza).pop().textContent).toBe('0'); expect(sizzle('field[var="muc#roomconfig_whois"] value ', sent_stanza).pop().textContent).toBe('anyone'); diff --git a/src/headless/converse-muc.js b/src/headless/converse-muc.js index 7e544a9f1..910221671 100644 --- a/src/headless/converse-muc.js +++ b/src/headless/converse-muc.js @@ -658,19 +658,18 @@ converse.plugins.add('converse-muc', { const fieldname = field.getAttribute('var').replace('muc#roomconfig_', ''); const config = this.get('roomconfig'); if (fieldname in config) { - let value; + let values; switch (type) { case 'boolean': - value = config[fieldname] ? 1 : 0; + values = [config[fieldname] ? 1 : 0]; break; case 'list-multi': - // TODO: we don't yet handle "list-multi" types - value = field.innerHTML; + values = config[fieldname]; break; default: - value = config[fieldname]; + values= [config[fieldname]]; } - field.innerHTML = $build('value').t(value); + field.innerHTML = values.map(v => $build('value').t(v)).join(''); } return field; },