From 972f839e3cf57303d8fa1e05ecd00b17f67d5727 Mon Sep 17 00:00:00 2001 From: ikeblaster Date: Thu, 20 Feb 2020 13:30:06 +0100 Subject: Facebook: group chat minor optimization --- protocols/Facebook/src/server.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'protocols/Facebook') diff --git a/protocols/Facebook/src/server.cpp b/protocols/Facebook/src/server.cpp index 27a3a5d229..fbff76af40 100644 --- a/protocols/Facebook/src/server.cpp +++ b/protocols/Facebook/src/server.cpp @@ -234,10 +234,17 @@ FacebookUser* FacebookProto::RefreshThread(JSONNode& n) { Chat_Control(m_szModuleName, chatId, m_bHideGroupchats ? WINDOW_HIDDEN : SESSION_INITDONE); Chat_Control(m_szModuleName, chatId, SESSION_ONLINE); - auto* ret = new FacebookUser(_wtoi64(chatId), si->hContact, true); - m_users.insert(ret); + __int64 userId = _wtoi64(chatId); + auto* user = FindUser(userId); - return ret; + if (user == nullptr) { + user = new FacebookUser(userId, si->hContact, true); + m_users.insert(user); + } + else + user->hContact = si->hContact; + + return user; } FacebookUser* FacebookProto::RefreshThread(CMStringW& wszId) { @@ -615,7 +622,7 @@ void FacebookProto::OnPublishPrivateMessage(const JSONNode &root) pUser = AddContact(wszUserId, true); } else if (bIsChat && Chat_GetUserInfo(m_szModuleName, wszUserId) == nullptr) // user already exists, but room is not initialized - pUser = RefreshThread(wszUserId); + RefreshThread(wszUserId); for (auto &it : metadata["tags"]) { -- cgit v1.2.3