JC Brand 1 miesiąc temu
rodzic
commit
1b55473b5c

+ 6 - 6
src/headless/plugins/muc/api.js

@@ -3,7 +3,7 @@
  */
 import _converse from '../../shared/_converse.js';
 import chatboxes from '../../plugins/chatboxes/api.js';
-import log from "@converse/log";
+import log from '@converse/log';
 import promise_api from '../../shared/api/promise.js';
 import { CHATROOMS_TYPE } from '../../shared/constants.js';
 import { Strophe } from 'strophe.js';
@@ -32,7 +32,7 @@ const rooms = {
      * @param {object} [attrs] attrs The room attributes
      * @returns {Promise<MUC[]|MUC>} Promise which resolves with the Model representing the chat.
      */
-    create (jids, attrs = {}) {
+    create(jids, attrs = {}) {
         attrs = typeof attrs === 'string' ? { 'nick': attrs } : attrs || {};
         if (!attrs.nick && settings.get('muc_nickname_from_jid')) {
             const bare_jid = _converse.session.get('bare_jid');
@@ -43,7 +43,7 @@ const rooms = {
         } else if (typeof jids === 'string') {
             return rooms.get(getJIDFromURI(jids), attrs, true);
         }
-        return Promise.all(jids.map((jid) => /** @type {Promise<MUC>} */(rooms.get(getJIDFromURI(jid), attrs, true))));
+        return Promise.all(jids.map((jid) => /** @type {Promise<MUC>} */ (rooms.get(getJIDFromURI(jid), attrs, true))));
     },
 
     /**
@@ -103,14 +103,14 @@ const rooms = {
      *     }
      * );
      */
-    async open (jids, attrs = {}, force = false) {
+    async open(jids, attrs = {}, force = false) {
         await waitUntil('chatBoxesFetched');
         if (jids === undefined) {
             const err_msg = 'rooms.open: You need to provide at least one JID';
             log.error(err_msg);
             throw new TypeError(err_msg);
         } else if (typeof jids === 'string') {
-            const room = /** @type {MUC} */(await rooms.get(jids, attrs, true));
+            const room = /** @type {MUC} */ (await rooms.get(jids, attrs, true));
             !attrs.hidden && room?.maybeShow(force);
             return room;
         } else {
@@ -142,7 +142,7 @@ const rooms = {
      *     )
      * });
      */
-    async get (jids, attrs = {}, create = false) {
+    async get(jids, attrs = {}, create = false) {
         await waitUntil('chatBoxesFetched');
 
         /** @param {string} jid */

+ 59 - 60
src/plugins/muc-views/modals/muc-list.js

@@ -1,75 +1,72 @@
-import BaseModal from "plugins/modal/modal.js";
-import tplMUCDescription from "../templates/muc-description.js";
-import tplMUCList from "../templates/muc-list.js";
-import tplSpinner from "templates/spinner.js";
+import BaseModal from 'plugins/modal/modal.js';
+import tplMUCDescription from '../templates/muc-description.js';
+import tplMUCList from '../templates/muc-list.js';
+import tplSpinner from 'templates/spinner.js';
 import { __ } from 'i18n';
-import { api, converse, log, u } from "@converse/headless";
+import { api, converse, log, u } from '@converse/headless';
 
 const { Strophe, $iq, sizzle } = converse.env;
 const { getAttributes } = u;
 
-
 /**
  * Insert groupchat info (based on returned #disco IQ stanza)
  * @param {HTMLElement} el - The HTML DOM element that contains the info.
  * @param {Element} stanza - The IQ stanza containing the groupchat info.
  */
-function insertRoomInfo (el, stanza) {
+function insertRoomInfo(el, stanza) {
     // All MUC features found here: https://xmpp.org/registrar/disco-features.html
     el.querySelector('span.spinner').remove();
     el.querySelector('a.room-info').classList.add('selected');
     el.insertAdjacentHTML(
         'beforeend',
-        u.getElementFromTemplateResult(tplMUCDescription({
-            'jid': stanza.getAttribute('from'),
-            'desc': sizzle('field[var="muc#roominfo_description"] value', stanza).shift()?.textContent,
-            'occ': sizzle('field[var="muc#roominfo_occupants"] value', stanza).shift()?.textContent,
-            'hidden': sizzle('feature[var="muc_hidden"]', stanza).length,
-            'membersonly': sizzle('feature[var="muc_membersonly"]', stanza).length,
-            'moderated': sizzle('feature[var="muc_moderated"]', stanza).length,
-            'nonanonymous': sizzle('feature[var="muc_nonanonymous"]', stanza).length,
-            'open': sizzle('feature[var="muc_open"]', stanza).length,
-            'passwordprotected': sizzle('feature[var="muc_passwordprotected"]', stanza).length,
-            'persistent': sizzle('feature[var="muc_persistent"]', stanza).length,
-            'publicroom': sizzle('feature[var="muc_publicroom"]', stanza).length,
-            'semianonymous': sizzle('feature[var="muc_semianonymous"]', stanza).length,
-            'temporary': sizzle('feature[var="muc_temporary"]', stanza).length,
-            'unmoderated': sizzle('feature[var="muc_unmoderated"]', stanza).length
-        })));
+        u.getElementFromTemplateResult(
+            tplMUCDescription({
+                'jid': stanza.getAttribute('from'),
+                'desc': sizzle('field[var="muc#roominfo_description"] value', stanza).shift()?.textContent,
+                'occ': sizzle('field[var="muc#roominfo_occupants"] value', stanza).shift()?.textContent,
+                'hidden': sizzle('feature[var="muc_hidden"]', stanza).length,
+                'membersonly': sizzle('feature[var="muc_membersonly"]', stanza).length,
+                'moderated': sizzle('feature[var="muc_moderated"]', stanza).length,
+                'nonanonymous': sizzle('feature[var="muc_nonanonymous"]', stanza).length,
+                'open': sizzle('feature[var="muc_open"]', stanza).length,
+                'passwordprotected': sizzle('feature[var="muc_passwordprotected"]', stanza).length,
+                'persistent': sizzle('feature[var="muc_persistent"]', stanza).length,
+                'publicroom': sizzle('feature[var="muc_publicroom"]', stanza).length,
+                'semianonymous': sizzle('feature[var="muc_semianonymous"]', stanza).length,
+                'temporary': sizzle('feature[var="muc_temporary"]', stanza).length,
+                'unmoderated': sizzle('feature[var="muc_unmoderated"]', stanza).length,
+            })
+        )
+    );
 }
 
-
 /**
  * Show/hide extra information about a groupchat in a listing.
  * @param {Event} ev
  */
-function toggleRoomInfo (ev) {
+function toggleRoomInfo(ev) {
     const parent_el = u.ancestor(ev.target, '.room-item');
     const div_el = parent_el.querySelector('div.room-info');
     if (div_el) {
-        u.slideIn(div_el).then(u.removeElement)
+        u.slideIn(div_el).then(u.removeElement);
         parent_el.querySelector('a.room-info').classList.remove('selected');
     } else {
-        parent_el.insertAdjacentElement(
-            'beforeend',
-            u.getElementFromTemplateResult(tplSpinner())
-        );
-        api.disco.info(/** @type HTMLElement */(ev.target).getAttribute('data-room-jid'), null)
-            .then(stanza => insertRoomInfo(parent_el, stanza))
-            .catch(e => log.error(e));
+        parent_el.insertAdjacentElement('beforeend', u.getElementFromTemplateResult(tplSpinner()));
+        api.disco
+            .info(/** @type HTMLElement */ (ev.target).getAttribute('data-room-jid'), null)
+            .then((stanza) => insertRoomInfo(parent_el, stanza))
+            .catch((e) => log.error(e));
     }
 }
 
-
 export default class MUCListModal extends BaseModal {
-
-    constructor (options) {
+    constructor(options) {
         super(options);
         this.items = [];
         this.loading_items = false;
     }
 
-    initialize () {
+    initialize() {
         super.initialize();
         this.listenTo(this.model, 'change:muc_domain', this.onDomainChange);
         this.listenTo(this.model, 'change:feedback_text', () => this.requestUpdate());
@@ -79,38 +76,40 @@ export default class MUCListModal extends BaseModal {
         this.model.save('feedback_text', '');
     }
 
-    renderModal () {
+    renderModal() {
         return tplMUCList(
             Object.assign(this.model.toJSON(), {
                 'show_form': !api.settings.get('locked_muc_domain'),
                 'server_placeholder': this.model.get('muc_domain') || __('conference.example.org'),
                 'items': this.items,
                 'loading_items': this.loading_items,
-                'openRoom': ev => this.openRoom(ev),
-                'setDomainFromEvent': ev => this.setDomainFromEvent(ev),
-                'submitForm': ev => this.showRooms(ev),
-                'toggleRoomInfo': ev => this.toggleRoomInfo(ev)
-            }));
+                'openRoom': (ev) => this.openRoom(ev),
+                'setDomainFromEvent': (ev) => this.setDomainFromEvent(ev),
+                'submitForm': (ev) => this.showRooms(ev),
+                'toggleRoomInfo': (ev) => this.toggleRoomInfo(ev),
+            })
+        );
     }
 
-    getModalTitle () { // eslint-disable-line class-methods-use-this
+    getModalTitle() {
+        // eslint-disable-line class-methods-use-this
         return __('Query for Groupchats');
     }
 
-    openRoom (ev) {
+    openRoom(ev) {
         ev.preventDefault();
         const jid = ev.target.getAttribute('data-room-jid');
         const name = ev.target.getAttribute('data-room-name');
         this.modal.hide();
-        api.rooms.open(jid, {'name': name}, true);
+        api.rooms.open(jid, { 'name': name }, true);
     }
 
-    toggleRoomInfo (ev) {
+    toggleRoomInfo(ev) {
         ev.preventDefault();
         toggleRoomInfo(ev);
     }
 
-    onDomainChange () {
+    onDomainChange() {
         api.settings.get('auto_list_rooms') && this.updateRoomsList();
     }
 
@@ -120,15 +119,15 @@ export default class MUCListModal extends BaseModal {
      * @method _converse.ChatRoomView#onRoomsFound
      * @param {HTMLElement} [iq]
      */
-    onRoomsFound (iq) {
+    onRoomsFound(iq) {
         this.loading_items = false;
         const rooms = iq ? sizzle('query item', iq) : [];
         if (rooms.length) {
-            this.model.set({'feedback_text': __('Groupchats found')}, {'silent': true});
+            this.model.set({ 'feedback_text': __('Groupchats found') }, { 'silent': true });
             this.items = rooms.map(getAttributes);
         } else {
             this.items = [];
-            this.model.set({'feedback_text': __('No groupchats found')}, {'silent': true});
+            this.model.set({ 'feedback_text': __('No groupchats found') }, { 'silent': true });
         }
         this.requestUpdate();
         return true;
@@ -139,18 +138,18 @@ export default class MUCListModal extends BaseModal {
      * @private
      * @method _converse.ChatRoomView#updateRoomsList
      */
-    updateRoomsList () {
+    updateRoomsList() {
         const iq = $iq({
             'to': this.model.get('muc_domain'),
             'from': api.connection.get().jid,
-            'type': "get"
-        }).c("query", {xmlns: Strophe.NS.DISCO_ITEMS});
+            'type': 'get',
+        }).c('query', { xmlns: Strophe.NS.DISCO_ITEMS });
         api.sendIQ(iq)
-            .then(iq => this.onRoomsFound(iq))
-            .catch(() => this.onRoomsFound())
+            .then((iq) => this.onRoomsFound(iq))
+            .catch(() => this.onRoomsFound());
     }
 
-    showRooms (ev) {
+    showRooms(ev) {
         ev.preventDefault();
         this.loading_items = true;
         this.requestUpdate();
@@ -160,12 +159,12 @@ export default class MUCListModal extends BaseModal {
         this.updateRoomsList();
     }
 
-    setDomainFromEvent (ev) {
+    setDomainFromEvent(ev) {
         this.model.setDomain(ev.target.value);
     }
 
-    setNick (ev) {
-        this.model.save({nick: ev.target.value});
+    setNick(ev) {
+        this.model.save({ nick: ev.target.value });
     }
 }