JC Brand 1 rok temu
rodzic
commit
a6595b0322

+ 7 - 1
.eslintrc.json

@@ -88,7 +88,13 @@
         "lines-around-comment": "off",
         "lines-around-directive": "off",
         "max-depth": "error",
-        "max-len": ["error", { "code": 120 }],
+        "max-len": ["error", {
+            "code": 120,
+            "comments": 120,
+            "ignoreStrings": true,
+            "ignoreUrls": true,
+            "ignoreTemlateLiterals": true
+        }],
         "max-lines": "off",
         "max-nested-callbacks": "off",
         "max-params": "off",

+ 1 - 1
src/headless/plugins/vcard/utils.js

@@ -72,7 +72,7 @@ export function onOccupantAvatarChanged (occupant) {
         vcards.push(_converse.state.vcards.get(occupant.get('jid')));
     }
     vcards.push(_converse.state.vcards.get(occupant.get('from')));
-    vcards.forEach(v => (hash && v?.get('image_hash') !== hash) && api.vcard.update(v, true));
+    vcards.forEach(v => (hash && v && v?.get('image_hash') !== hash) && api.vcard.update(v, true));
 }
 
 

+ 1 - 1
src/plugins/bookmark-views/tests/bookmarks-list.js

@@ -137,7 +137,7 @@ describe("The bookmarks list modal", function () {
         expect((await api.rooms.get('first@conference.shakespeare.lit')).get('hidden')).toBe(true);
         expect((await api.rooms.get('theplay@conference.shakespeare.lit')).get('hidden')).toBe(false);
 
-        controlbox.querySelector('.list-container--openrooms .open-room:nth-child(2)').click();
+        controlbox.querySelector('.list-container--openrooms .open-room').click();
         await u.waitUntil(() => controlbox.querySelector('.list-item.open').getAttribute('data-room-jid') === 'first@conference.shakespeare.lit');
         expect((await api.rooms.get('first@conference.shakespeare.lit')).get('hidden')).toBe(false);
         expect((await api.rooms.get('theplay@conference.shakespeare.lit')).get('hidden')).toBe(true);

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

@@ -66,10 +66,10 @@ function tplRoomItem (el, room) {
                     name="${room.getDisplayName()}"
                     nonce=${room.vcard?.get('vcard_updated')}
                     height="30" width="30"></converse-avatar>
-                ${ room.get('num_unread') ?
-                        tplUnreadIndicator(room) :
-                        (room.get('has_activity') ? tplActivityIndicator() : '') }
-                <span>${room.getDisplayName()}</span>
+                <span>${ room.get('num_unread') ?
+                            tplUnreadIndicator(room) :
+                            (room.get('has_activity') ? tplActivityIndicator() : '') }
+                    ${room.getDisplayName()}</span>
             </a>
 
             ${ api.settings.get('allow_bookmarks') ? tplBookmark(room) : '' }
@@ -197,7 +197,7 @@ export default (el) => {
             <ul class="items-list rooms-list open-rooms-list ${ is_closed ? 'collapsed' : '' }">
                 ${ group_by_domain ?
                     tplRoomDomainGroupList(el, rooms) :
-                    rooms.map(room => tplRoomItem(el, room))
+                    rooms.map(/** @param {MUC} room */(room) => tplRoomItem(el, room))
                 }
             </ul>
         </div>`;

+ 2 - 2
src/plugins/roomslist/tests/grouplists.js

@@ -32,7 +32,7 @@ describe("The list of MUC domains", function () {
         await u.waitUntil(() => lview.querySelectorAll(".open-room").length);
         let room_els = lview.querySelectorAll(".open-room");
         expect(room_els.length).toBe(1);
-        expect(room_els[0].innerText).toBe('room@conference.shakespeare.lit');
+        expect(room_els[0].querySelector('span').innerText).toBe('room@conference.shakespeare.lit');
 
         // Check that a second room in the same domain is shown in the same
         // domain group.
@@ -64,7 +64,7 @@ describe("The list of MUC domains", function () {
         expect(room_els.length).toBe(1);
         group_els = lview.querySelectorAll(".muc-domain-group");
         expect(group_els.length).toBe(1);
-        expect(room_els[0].innerText).toBe('lounge@montague.lit');
+        expect(room_els[0].querySelector('span').innerText).toBe('lounge@montague.lit');
         expect(group_els[0].children[0].innerText.trim()).toBe('montague.lit');
         list = controlbox.querySelector('.list-container--openrooms');
         u.waitUntil(() => Array.from(list.classList).includes('hidden'));

+ 5 - 5
src/plugins/roomslist/tests/roomslist.js

@@ -22,7 +22,7 @@ describe("A list of open groupchats", function () {
         await u.waitUntil(() => lview.querySelectorAll(".open-room").length);
         let room_els = lview.querySelectorAll(".open-room");
         expect(room_els.length).toBe(1);
-        expect(room_els[0].innerText).toBe('room@conference.shakespeare.lit');
+        expect(room_els[0].querySelector('span').innerText).toBe('room@conference.shakespeare.lit');
 
         await mock.openChatRoom(_converse, 'lounge', 'montague.lit', 'romeo');
         await u.waitUntil(() => lview.querySelectorAll(".open-room").length > 1);
@@ -33,7 +33,7 @@ describe("A list of open groupchats", function () {
         await view.close();
         room_els = lview.querySelectorAll(".open-room");
         expect(room_els.length).toBe(1);
-        expect(room_els[0].innerText).toBe('lounge@montague.lit');
+        expect(room_els[0].querySelector('span').innerText).toBe('lounge@montague.lit');
         list = controlbox.querySelector('.list-container--openrooms');
         u.waitUntil(() => Array.from(list.classList).includes('hidden'));
 
@@ -149,7 +149,7 @@ describe("A list of open groupchats", function () {
         expect(Array.from(list.classList).includes('hidden')).toBeFalsy();
         const items = list.querySelectorAll('.list-item');
         expect(items.length).toBe(1);
-        await u.waitUntil(() => list.querySelector('.list-item .open-room').textContent.trim() === 'Bookmarked Lounge');
+        await u.waitUntil(() => list.querySelector('.list-item .open-room span').textContent.trim() === 'Bookmarked Lounge');
         expect(_converse.bookmarks.fetchBookmarks).toHaveBeenCalled();
     }));
 });
@@ -175,7 +175,7 @@ describe("A groupchat shown in the groupchats list", function () {
         let item = room_els[0];
         await u.waitUntil(() => _converse.chatboxes.get(muc_jid).get('hidden') === false);
         await u.waitUntil(() => u.hasClass('open', item), 1000);
-        expect(item.querySelector('.open-room').textContent.trim()).toBe('coven@chat.shakespeare.lit');
+        expect(item.querySelector('.open-room span').textContent.trim()).toBe('coven@chat.shakespeare.lit');
         await _converse.api.rooms.open('balcony@chat.shakespeare.lit', {'nick': 'some1'}, true);
         await u.waitUntil(() => lview.querySelectorAll(".open-room").length > 1);
         room_els = lview.querySelectorAll(".open-room");
@@ -184,7 +184,7 @@ describe("A groupchat shown in the groupchats list", function () {
         room_els = lview.querySelectorAll(".available-chatroom.open");
         expect(room_els.length).toBe(1);
         item = room_els[0];
-        expect(item.querySelector('a').textContent.trim()).toBe('balcony@chat.shakespeare.lit');
+        expect(item.querySelector('.open-room span').textContent.trim()).toBe('balcony@chat.shakespeare.lit');
     }));
 
     it("shows the MUC avatar", mock.initConverse(

+ 1 - 0
src/plugins/roomslist/view.js

@@ -26,6 +26,7 @@ export class RoomsList extends CustomElement {
         this.listenTo(chatboxes, 'remove', this.renderIfChatRoom);
         this.listenTo(chatboxes, 'destroy', this.renderIfChatRoom);
         this.listenTo(chatboxes, 'change', this.renderIfRelevantChange);
+        this.listenTo(chatboxes, 'vcard:add', () => this.requestUpdate());
         this.listenTo(chatboxes, 'vcard:change', () => this.requestUpdate());
         this.listenTo(this.model, 'change', () => this.requestUpdate());
 

+ 1 - 1
src/shared/styles/lists.scss

@@ -64,7 +64,7 @@
             .list-item-badge {
                 opacity: 1;
                 border-radius: 25%;
-                color: white;
+                color: var(--badge-color);
                 font-size: var(--font-size-small);
                 line-height: var(--font-size-small);
             }