Forráskód Böngészése

bugfix: Don't show closed MUCs in the rooms list

JC Brand 1 hónapja
szülő
commit
e8c11dd549

+ 2 - 5
src/plugins/roomslist/templates/roomslist.js

@@ -11,7 +11,7 @@ import { getUnreadMsgsDisplay } from "shared/chat/utils";
 
 import '../styles/roomsgroups.scss';
 
-const { CHATROOMS_TYPE, CLOSED } = constants;
+const { CLOSED } = constants;
 const { isUniView } = u;
 
 /** @param {MUC} room */
@@ -124,10 +124,7 @@ function tplRoomDomainGroupList (el, rooms) {
  */
 export default (el) => {
     const group_by_domain = api.settings.get('muc_grouped_by_domain');
-    const { chatboxes } = _converse.state;
-    const rooms = chatboxes.filter((m) => m.get('type') === CHATROOMS_TYPE);
-    rooms.sort((a, b) => (a.getDisplayName().toLowerCase() <= b.getDisplayName().toLowerCase() ? -1 : 1));
-
+    const rooms = el.getRoomsToShow();
     const i18n_desc_rooms = __('Click to toggle the list of open groupchats');
     const i18n_heading_chatrooms = __('Groupchats');
     const i18n_title_list_rooms = __('Query server');

+ 10 - 5
src/plugins/roomslist/view.js

@@ -10,7 +10,7 @@ import tplRoomslist from './templates/roomslist.js';
 
 const { Strophe } = converse.env;
 const { initStorage } = u;
-const { CLOSED, OPENED } = constants;
+const { CHATROOMS_TYPE, CLOSED, OPENED } = constants;
 
 export class RoomsList extends CustomElement {
     initialize() {
@@ -52,6 +52,14 @@ export class RoomsList extends CustomElement {
         }
     }
 
+    /** @returns {import('@converse/headless').MUC[]} */
+    getRoomsToShow() {
+        const { chatboxes } = _converse.state;
+        const rooms = chatboxes.filter((m) => m.get('type') === CHATROOMS_TYPE && !m.get('closed'));
+        rooms.sort((a, b) => (a.getDisplayName().toLowerCase() <= b.getDisplayName().toLowerCase() ? -1 : 1));
+        return rooms;
+    }
+
     /** @param {Event} ev */
     async openRoom(ev) {
         ev.preventDefault();
@@ -70,10 +78,7 @@ export class RoomsList extends CustomElement {
         const target = /** @type {HTMLElement} */ (ev.currentTarget);
         const name = target.getAttribute('data-room-name');
         const jid = target.getAttribute('data-room-jid');
-        const result = await api.confirm(
-            __('Confirm'),
-            __('Are you sure you want to leave the groupchat %1$s?', name)
-        );
+        const result = await api.confirm(__('Confirm'), __('Are you sure you want to leave the groupchat %1$s?', name));
         if (result) {
             const room = await api.rooms.get(jid);
             room.close();

+ 2 - 0
src/types/plugins/roomslist/view.d.ts

@@ -6,6 +6,8 @@ export class RoomsList extends CustomElement {
     renderIfChatRoom(model: Model): void;
     /** @param {Model} model */
     renderIfRelevantChange(model: Model): void;
+    /** @returns {import('@converse/headless').MUC[]} */
+    getRoomsToShow(): import("@converse/headless").MUC[];
     /** @param {Event} ev */
     openRoom(ev: Event): Promise<void>;
     /** @param {Event} ev */