From b72d1852116e0ab9ae9636f91353514fe2aa86e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Thu, 9 Feb 2023 19:30:32 -0500 Subject: [PATCH] fix: chats, allow multiple dropdowns like in harmony --- public/src/client/chats.js | 2 +- public/src/client/header/chat.js | 17 +++++++++-------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/public/src/client/chats.js b/public/src/client/chats.js index 725023ec4b..8c3f45d18a 100644 --- a/public/src/client/chats.js +++ b/public/src/client/chats.js @@ -482,7 +482,7 @@ define('forum/chats', [ newMessage = data.self === 0; } data.message.self = data.self; - data.message.timestamp = Math.min(Date.now(), data.message.timetamp); + data.message.timestamp = Math.min(Date.now(), data.message.timestamp); data.message.timestampISO = utils.toISOString(data.message.timestamp); messages.appendChatMessage($('.expanded-chat .chat-content'), data.message); } else if (ajaxify.data.template.chats) { diff --git a/public/src/client/header/chat.js b/public/src/client/header/chat.js index 4cf1686d3c..6b4a04aaf9 100644 --- a/public/src/client/header/chat.js +++ b/public/src/client/header/chat.js @@ -4,20 +4,21 @@ define('forum/header/chat', ['components', 'hooks'], function (components, hooks const chat = {}; chat.prepareDOM = function () { - const chatsListEl = components.get('chat/list'); - const chatsToggleEl = $('[component="chat/dropdown"]'); - if (!chatsToggleEl) { + if (!chatsToggleEl.length) { return; } - chatsToggleEl.on('show.bs.dropdown', () => { - requireAndCall('loadChatsDropdown', chatsListEl); + chatsToggleEl.on('show.bs.dropdown', (ev) => { + requireAndCall('loadChatsDropdown', $(ev.target).parent().find('[component="chat/list"]')); }); - if (chatsToggleEl.parents('.dropdown').hasClass('show')) { - requireAndCall('loadChatsDropdown', chatsListEl); - } + chatsToggleEl.each((index, el) => { + const dropdownEl = $(el).parent().find('.dropdown-menu'); + if (dropdownEl.hasClass('show')) { + requireAndCall('loadChatsDropdown', dropdownEl.find('[component="chat/list"]')); + } + }); socket.removeListener('event:chats.receive', onChatMessageReceived); socket.on('event:chats.receive', onChatMessageReceived);