From 483fcc6dd94ab81278143a07b19be585a161aa4c Mon Sep 17 00:00:00 2001 From: ElzorFox Date: Fri, 16 Dec 2022 15:26:10 +0500 Subject: VKontakte: fix load history for groupchats on startup protocol - fix server store procedure (RetrieveChatInfo v3) fix groupchat message processing on empty history version bump --- protocols/VKontakte/src/version.h | 2 +- protocols/VKontakte/src/vk_chats.cpp | 7 ++++--- protocols/VKontakte/src/vkjs.js | 14 ++++++++++---- 3 files changed, 15 insertions(+), 8 deletions(-) (limited to 'protocols') diff --git a/protocols/VKontakte/src/version.h b/protocols/VKontakte/src/version.h index b399bebac4..0c2eac2d1f 100644 --- a/protocols/VKontakte/src/version.h +++ b/protocols/VKontakte/src/version.h @@ -1,7 +1,7 @@ #define __MAJOR_VERSION 0 #define __MINOR_VERSION 1 #define __RELEASE_NUM 14 -#define __BUILD_NUM 0 +#define __BUILD_NUM 1 #include diff --git a/protocols/VKontakte/src/vk_chats.cpp b/protocols/VKontakte/src/vk_chats.cpp index 7811a75114..6b05135d02 100644 --- a/protocols/VKontakte/src/vk_chats.cpp +++ b/protocols/VKontakte/src/vk_chats.cpp @@ -245,11 +245,12 @@ void CVkProto::OnReceiveChatInfo(NETLIBHTTPREQUEST *reply, AsyncHttpRequest *pRe break; AppendChatConversationMessage(cc->m_iChatId, jnMsg, jnFUsers, true); - } - cc->m_bHistoryRead = true; + } } } + cc->m_bHistoryRead = true; + for (auto &p : cc->m_msgs) AppendChatMessage(cc, p->m_uid, p->m_date, p->m_wszBody, p->m_bHistory, p->m_bIsAction); @@ -275,7 +276,7 @@ void CVkProto::SetChatTitle(CVkChatInfo *cc, LPCWSTR wszTopic) void CVkProto::AppendChatConversationMessage(int id, const JSONNode& jnMsg, const JSONNode& jnFUsers, bool bIsHistory) { - debugLogA("CVkProto::AppendChatMessage"); + debugLogA("CVkProto::AppendChatConversationMessage"); CVkChatInfo* cc = AppendConversationChat(id, nullNode); if (cc == nullptr) return; diff --git a/protocols/VKontakte/src/vkjs.js b/protocols/VKontakte/src/vkjs.js index 946109c4ae..2392c2eeb9 100644 --- a/protocols/VKontakte/src/vkjs.js +++ b/protocols/VKontakte/src/vkjs.js @@ -337,13 +337,14 @@ return { "info": Info, "users": ChatUsers, "msgs": ChatMsg, "fwd_users": FUsers, // ver 3 var Info = API.messages.getChat({ "chat_id": Args.chatid }); -var ChatUsers = API.messages.getConversationMembers({ "peer_id": 2000000000 + parseInt(Args.chatid), "fields": "id,first_name,last_name" }); -var ChatMsg = API.messages.getHistory({ "chat_id": Args.chatid, "count": 20, "rev": 0 }); +var PeerId = 2000000000 + parseInt(Args.chatid); +var ChatUsers = API.messages.getConversationMembers({ "peer_id": PeerId, "fields": "id,first_name,last_name" }); +var ChatMsg = API.messages.getHistory({ "peer_id": PeerId, "count": 20, "rev": 0 }); var UR = parseInt(ChatMsg.unread); if (UR > 20) { if (UR > 200) UR = 200; - ChatMsg = API.messages.getHistory({ "chat_id": Args.chatid, "count": UR, "rev": 0 }); + ChatMsg = API.messages.getHistory({ "peer_id": PeerId, "count": UR, "rev": 0 }); }; var FMsgs = ChatMsg.items@.fwd_messages; var Idx = 0; @@ -365,11 +366,16 @@ while (Idx < FMsgs.length) { var FUsers = API.users.get({ "user_ids": Uids, "name_case": "gen" }); var GUsers = []; if(GUids.length>0){ - GUsers = API.groups.getById({ "group_ids": GUids }); + GUsers = API.groups.getById({ "group_ids": GUids }); }; var MsgUsers = API.users.get({ "user_ids": ChatMsg.items@.from_id, "fields":"id,first_name,last_name"}); return { "info": Info, "users": ChatUsers, "msgs": ChatMsg, "fwd_users": FUsers + GUsers, "msgs_users": MsgUsers}; + + +var Info=API.messages.getChat({"chat_id": Args.chatid}); +var ChatUsers=API.messages.getChatUsers({"chat_id":Args.chatid,"fields":"id,first_name,last_name"}); +return {"info":Info,"users":ChatUsers}; // Stored procedure name: RetrieveChatInfo = End // Stored procedure name: DestroyKickChat = Begin -- cgit v1.2.3