From 899221e2d058f5afe30bb2ecdbf168c8ad3c15a6 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Fri, 27 Jan 2023 19:48:42 +0300 Subject: Group chats: all old APIs with lookup by module+session removed --- protocols/Facebook/src/groupchats.cpp | 6 +++--- protocols/Facebook/src/proto.h | 1 + protocols/Facebook/src/server.cpp | 20 ++++++++------------ 3 files changed, 12 insertions(+), 15 deletions(-) (limited to 'protocols/Facebook') diff --git a/protocols/Facebook/src/groupchats.cpp b/protocols/Facebook/src/groupchats.cpp index b43e05696a..cc56860e5a 100644 --- a/protocols/Facebook/src/groupchats.cpp +++ b/protocols/Facebook/src/groupchats.cpp @@ -131,7 +131,7 @@ int FacebookProto::GroupchatMenuHook(WPARAM, LPARAM lParam) if (mir_strcmpi(gcmi->pszModule, m_szModuleName)) return 0; - if (SESSION_INFO *si = g_chatApi.SM_FindSession(gcmi->pszID, gcmi->pszModule)) { + if (SESSION_INFO *si = Chat_Find(gcmi->pszID, gcmi->pszModule)) { if (gcmi->Type == MENU_ON_LOG) Chat_AddMenuItems(gcmi->hMenu, _countof(sttLogListItems), sttLogListItems, &g_plugin); if (gcmi->Type == MENU_ON_NICKLIST) @@ -150,7 +150,7 @@ int FacebookProto::GroupchatEventHook(WPARAM, LPARAM lParam) if (mir_strcmpi(gch->si->pszModule, m_szModuleName)) return 0; - SESSION_INFO *si = g_chatApi.SM_FindSession(gch->si->ptszID, gch->si->pszModule); + SESSION_INFO *si = Chat_Find(gch->si->ptszID, gch->si->pszModule); if (si == nullptr) return 1; @@ -245,7 +245,7 @@ int FacebookProto::Chat_KickUser(SESSION_INFO *si, const wchar_t *pwszUid) static void __cdecl DestroyRoomThread(SESSION_INFO *si) { ::Sleep(100); - Chat_Terminate(si->pszModule, si->ptszID, true); + Chat_Terminate(si, true); } void FacebookProto::Chat_Leave(SESSION_INFO *si) diff --git a/protocols/Facebook/src/proto.h b/protocols/Facebook/src/proto.h index efa5a008d9..fa110918f4 100644 --- a/protocols/Facebook/src/proto.h +++ b/protocols/Facebook/src/proto.h @@ -354,6 +354,7 @@ struct FacebookUser MCONTACT hContact; bool bIsChat; bool bIsChatInitialized; + SESSION_INFO *si; }; ///////////////////////////////////////////////////////////////////////////////////////// diff --git a/protocols/Facebook/src/server.cpp b/protocols/Facebook/src/server.cpp index e3d1f31736..8a3aa1819d 100644 --- a/protocols/Facebook/src/server.cpp +++ b/protocols/Facebook/src/server.cpp @@ -286,8 +286,7 @@ FacebookUser* FacebookProto::RefreshThread(JSONNode &n) CMStringW userId(ur["id"].as_mstring()); CMStringW userName(ur["name"].as_mstring()); - GCEVENT gce = { m_szModuleName, 0, GC_EVENT_JOIN }; - gce.pszID.w = chatId; + GCEVENT gce = { si, GC_EVENT_JOIN }; gce.pszUID.w = userId; gce.pszNick.w = userName; gce.bIsMe = _wtoi64(userId) == m_uid; @@ -295,8 +294,8 @@ FacebookUser* FacebookProto::RefreshThread(JSONNode &n) Chat_Event(&gce); } - Chat_Control(m_szModuleName, chatId, m_bHideGroupchats ? WINDOW_HIDDEN : SESSION_INITDONE); - Chat_Control(m_szModuleName, chatId, SESSION_ONLINE); + Chat_Control(si, m_bHideGroupchats ? WINDOW_HIDDEN : SESSION_INITDONE); + Chat_Control(si, SESSION_ONLINE); __int64 userId = _wtoi64(chatId); auto *pUser = FindUser(userId); @@ -307,6 +306,7 @@ FacebookUser* FacebookProto::RefreshThread(JSONNode &n) m_users.insert(pUser); } else { + pUser->si = si; pUser->hContact = si->hContact; pUser->bIsChatInitialized = true; } @@ -872,8 +872,7 @@ void FacebookProto::OnPublishPrivateMessage(const JSONNode &root) // TODO: GC_EVENT_JOIN for chat participants which are missing (for example added later during group chat) - GCEVENT gce = { m_szModuleName, 0, GC_EVENT_MESSAGE }; - gce.pszID.w = wszUserId; + GCEVENT gce = { pUser->si, GC_EVENT_MESSAGE }; gce.dwFlags = GCEF_ADDTOLOG; gce.pszUID.w = wszActorFbId; gce.pszText.w = wszText; @@ -939,8 +938,7 @@ void FacebookProto::OnPublishChatJoin(const JSONNode &root) for (auto &it : root["addedParticipants"]) { CMStringW wszNick(it["fullName"].as_mstring()), wszId(it["userFbId"].as_mstring()); - GCEVENT gce = { m_szModuleName, 0, GC_EVENT_JOIN }; - gce.pszID.w = wszUserId; + GCEVENT gce = { pUser->si, GC_EVENT_JOIN }; gce.dwFlags = GCEF_ADDTOLOG; gce.pszNick.w = wszNick; gce.pszUID.w = wszId; @@ -968,8 +966,7 @@ void FacebookProto::OnPublishChatLeave(const JSONNode &root) return; CMStringW wszText(metadata["adminText"].as_mstring()), wszId(root["leftParticipantFbId"].as_mstring()); - GCEVENT gce = { m_szModuleName, 0, GC_EVENT_PART }; - gce.pszID.w = wszUserId; + GCEVENT gce = { pUser->si, GC_EVENT_PART }; gce.dwFlags = GCEF_ADDTOLOG; gce.pszUID.w = wszId; gce.pszText.w = wszText; @@ -1017,8 +1014,7 @@ bool FacebookProto::CheckOwnMessage(FacebookUser *pUser, __int64 offlineId, cons wchar_t userId[100]; _i64tow_s(pUser->id, userId, _countof(userId), 10); - GCEVENT gce = { m_szModuleName, 0, GC_EVENT_MESSAGE }; - gce.pszID.w = userId; + GCEVENT gce = { pUser->si, GC_EVENT_MESSAGE }; gce.dwFlags = GCEF_ADDTOLOG; gce.pszUID.w = wszId; gce.pszText.w = tmp.wszText; -- cgit v1.2.3