diff options
author | ElzorFox <elzorfox@ya.ru> | 2020-06-18 14:06:24 +0500 |
---|---|---|
committer | ElzorFox <elzorfox@ya.ru> | 2020-06-18 14:06:47 +0500 |
commit | 9f5e4ae49d35bb503decce730d141d55ec9f165a (patch) | |
tree | 475fc502f346b4908820f1bf9f9d7b6072997cdd /protocols/VKontakte | |
parent | 9f0fd05e99ed187801efd38d88dda0b355a7f61d (diff) |
VKontakte:
VK API upgrade (5.78 => 5.110)
version bump
Diffstat (limited to 'protocols/VKontakte')
-rw-r--r-- | protocols/VKontakte/src/version.h | 4 | ||||
-rw-r--r-- | protocols/VKontakte/src/vk.h | 2 | ||||
-rw-r--r-- | protocols/VKontakte/src/vk_chats.cpp | 36 | ||||
-rw-r--r-- | protocols/VKontakte/src/vk_messages.cpp | 17 | ||||
-rw-r--r-- | protocols/VKontakte/src/vk_options.cpp | 2 | ||||
-rw-r--r-- | protocols/VKontakte/src/vk_proto.h | 6 | ||||
-rw-r--r-- | protocols/VKontakte/src/vk_struct.cpp | 8 | ||||
-rw-r--r-- | protocols/VKontakte/src/vk_struct.h | 6 |
8 files changed, 62 insertions, 19 deletions
diff --git a/protocols/VKontakte/src/version.h b/protocols/VKontakte/src/version.h index eee10724fa..8a6084d743 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 10
-#define __BUILD_NUM 1
+#define __RELEASE_NUM 11
+#define __BUILD_NUM 0
#include <stdver.h>
diff --git a/protocols/VKontakte/src/vk.h b/protocols/VKontakte/src/vk.h index 527021c145..284fb9e204 100644 --- a/protocols/VKontakte/src/vk.h +++ b/protocols/VKontakte/src/vk.h @@ -90,7 +90,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. #define VK_CHAT_FLAG 2000000000
-#define VK_NEW_API 0
+#define VK_NEW_API 1
#if (VK_NEW_API == 0)
#define VK_API_VER "5.78"
diff --git a/protocols/VKontakte/src/vk_chats.cpp b/protocols/VKontakte/src/vk_chats.cpp index 9106e4a6b3..402e51744d 100644 --- a/protocols/VKontakte/src/vk_chats.cpp +++ b/protocols/VKontakte/src/vk_chats.cpp @@ -106,6 +106,7 @@ CVkChatInfo* CVkProto::AppendConversationChat(int iChatId, const JSONNode& jnIte }
+#if (VK_NEW_API == 0)
CVkChatInfo* CVkProto::AppendChat(int id, const JSONNode &jnDlg)
{
debugLogW(L"CVkProto::AppendChat");
@@ -170,6 +171,7 @@ CVkChatInfo* CVkProto::AppendChat(int id, const JSONNode &jnDlg) RetrieveChatInfo(c);
return c;
}
+#endif
/////////////////////////////////////////////////////////////////////////////////////////
@@ -485,6 +487,14 @@ void CVkProto::AppendChatConversationMessage(int id, const JSONNode& jnMsg, cons wszBody += wszFwdMessages;
}
+ const JSONNode& jnReplyMessages = jnMsg["reply_message"];
+ if (jnReplyMessages && !jnReplyMessages.empty()) {
+ CMStringW wszReplyMessages = GetFwdMessages(jnReplyMessages, jnFUsers, bbcNo);
+ if (!wszBody.IsEmpty())
+ wszReplyMessages = L"\n" + wszReplyMessages;
+ wszBody += wszReplyMessages;
+ }
+
const JSONNode& jnAttachments = jnMsg["attachments"];
if (jnAttachments && !jnAttachments.empty()) {
CMStringW wszAttachmentDescr = GetAttachmentDescr(jnAttachments, bbcNo);
@@ -497,7 +507,7 @@ void CVkProto::AppendChatConversationMessage(int id, const JSONNode& jnMsg, cons wszBody += wszAttachmentDescr;
}
- if (m_vkOptions.bAddMessageLinkToMesWAtt && ((jnAttachments && !jnAttachments.empty())||(jnFwdMessages && !jnFwdMessages.empty())))
+ if (m_vkOptions.bAddMessageLinkToMesWAtt && ((jnAttachments && !jnAttachments.empty()) || (jnFwdMessages && !jnFwdMessages.empty()) || (jnReplyMessages && !jnReplyMessages.empty())))
wszBody += SetBBCString(TranslateT("Message link"), bbcNo, vkbbcUrl,
CMStringW(FORMAT, L"https://vk.com/im?sel=c%d&msgid=%d", cc->m_iChatId, mid));
@@ -593,7 +603,7 @@ void CVkProto::AppendChatConversationMessage(int id, const JSONNode& jnMsg, cons }
}
-
+#if (VK_NEW_API == 0)
void CVkProto::AppendChatMessage(int id, const JSONNode &jnMsg, const JSONNode &jnFUsers, bool bIsHistory)
{
debugLogA("CVkProto::AppendChatMessage");
@@ -729,6 +739,7 @@ void CVkProto::AppendChatMessage(int id, const JSONNode &jnMsg, const JSONNode & cm->m_bIsAction = bIsAction;
}
}
+#endif
void CVkProto::AppendChatMessage(CVkChatInfo *cc, LONG uid, int msgTime, LPCWSTR pwszBody, bool bIsHistory, bool bIsAction)
{
@@ -919,9 +930,16 @@ INT_PTR __cdecl CVkProto::OnJoinChat(WPARAM hContact, LPARAM) if (chat_id == VK_INVALID_USER)
return 1;
+#if (VK_NEW_API == 1)
+ AsyncHttpRequest* pReq = new AsyncHttpRequest(this, REQUEST_POST, "/method/messages.addChatUser.json", true, &CVkProto::OnReceiveSmth, AsyncHttpRequest::rpHigh);
+ pReq << INT_PARAM("user_id", m_myUserId);
+ pReq<< INT_PARAM("chat_id", chat_id);
+#else
+#define VK_API_VER "5.110"
AsyncHttpRequest *pReq = new AsyncHttpRequest(this, REQUEST_POST, "/method/messages.send.json", true, &CVkProto::OnSendChatMsg, AsyncHttpRequest::rpHigh);
pReq << INT_PARAM("chat_id", chat_id) << WCHAR_PARAM("message", m_vkOptions.pwszReturnChatMessage);
pReq->AddHeader("Content-Type", "application/x-www-form-urlencoded");
+#endif
Push(pReq);
db_unset(hContact, m_szModuleName, "off");
return 0;
@@ -983,7 +1001,12 @@ void CVkProto::KickFromChat(int chat_id, LONG user_id, const JSONNode &jnMsg, co return;
MCONTACT hContact = FindUser(user_id, false);
+
+#if (VK_NEW_API == 1)
+ CMStringW msg(jnMsg["text"].as_mstring());
+#else
CMStringW msg(jnMsg["body"].as_mstring());
+#endif
if (msg.IsEmpty()) {
msg = TranslateT("You've been kicked by ");
if (hContact != 0)
@@ -992,8 +1015,11 @@ void CVkProto::KickFromChat(int chat_id, LONG user_id, const JSONNode &jnMsg, co msg += TranslateT("(Unknown contact)");
}
else
+#if (VK_NEW_API == 1)
+ AppendChatConversationMessage(chat_id, jnMsg, jnFUsers, false);
+#else
AppendChatMessage(chat_id, jnMsg, jnFUsers, false);
-
+#endif
MsgPopup(hContact, msg, TranslateT("Chat"));
setByte(cc->m_hContact, "kicked", 1);
LeaveChat(chat_id);
@@ -1251,5 +1277,9 @@ void CVkProto::OnCreateNewChat(NETLIBHTTPREQUEST *reply, AsyncHttpRequest *pReq) int chat_id = jnResponse.as_int();
if (chat_id != 0)
+#if (VK_NEW_API == 1)
+ AppendConversationChat(chat_id, nullNode);
+#else
AppendChat(chat_id, nullNode);
+#endif
}
\ No newline at end of file diff --git a/protocols/VKontakte/src/vk_messages.cpp b/protocols/VKontakte/src/vk_messages.cpp index 9c5f93d4cd..fa91b6db23 100644 --- a/protocols/VKontakte/src/vk_messages.cpp +++ b/protocols/VKontakte/src/vk_messages.cpp @@ -154,6 +154,7 @@ INT_PTR CVkProto::SvcMarkMessagesAsRead(WPARAM hContact, LPARAM) return 0;
}
+#if (VK_NEW_API == 0)
void CVkProto::MarkMessagesRead(const CMStringA &mids)
{
debugLogA("CVkProto::MarkMessagesRead (mids)");
@@ -163,6 +164,7 @@ void CVkProto::MarkMessagesRead(const CMStringA &mids) Push(new AsyncHttpRequest(this, REQUEST_GET, "/method/messages.markAsRead.json", true, &CVkProto::OnReceiveSmth, AsyncHttpRequest::rpLow)
<< CHAR_PARAM("message_ids", mids));
}
+#endif
void CVkProto::MarkMessagesRead(const MCONTACT hContact)
{
@@ -240,12 +242,18 @@ void CVkProto::OnReceiveMessages(NETLIBHTTPREQUEST *reply, AsyncHttpRequest *pRe break;
CMStringW wszPeerType(jnPeer["type"].as_mstring());
+ int iUserId = jnPeer["id"].as_int();
if (wszPeerType == L"user" || wszPeerType == L"group") {
- int iUserId = jnPeer["id"].as_int();
MCONTACT hContact = FindUser(iUserId, true);
setDword(hContact, "in_read", jnItem["in_read"].as_int());
setDword(hContact, "out_read", jnItem["out_read"].as_int());
+ if (m_vkOptions.iMarkMessageReadOn == MarkMsgReadOn::markOnReceive)
+ MarkMessagesRead(hContact);
+ }
+ else {
+ MCONTACT hContact = FindChat(iUserId % VK_CHAT_FLAG);
+ MarkMessagesRead(hContact);
}
}
}
@@ -270,11 +278,6 @@ void CVkProto::OnReceiveMessages(NETLIBHTTPREQUEST *reply, AsyncHttpRequest *pRe char szMid[40];
_itoa(mid, szMid, 10);
- if (m_vkOptions.iMarkMessageReadOn == MarkMsgReadOn::markOnReceive || chat_id != 0) {
- if (!mids.IsEmpty())
- mids.AppendChar(',');
- mids.Append(szMid);
- }
bool bUseServerReadFlag = m_vkOptions.bSyncReadMessageStatusFromServer ? true : !m_vkOptions.bMesAsUnread;
@@ -533,10 +536,10 @@ void CVkProto::OnReceiveMessages(NETLIBHTTPREQUEST *reply, AsyncHttpRequest *pRe ProtoChainRecvMsg(hContact, &recv);
}
}
-#endif
if (!mids.IsEmpty())
MarkMessagesRead(mids);
+#endif
}
void CVkProto::OnReceiveDlgs(NETLIBHTTPREQUEST *reply, AsyncHttpRequest *pReq)
diff --git a/protocols/VKontakte/src/vk_options.cpp b/protocols/VKontakte/src/vk_options.cpp index 38f8aac213..25259b7928 100644 --- a/protocols/VKontakte/src/vk_options.cpp +++ b/protocols/VKontakte/src/vk_options.cpp @@ -270,7 +270,9 @@ CVkOptionAdvancedForm::CVkOptionAdvancedForm(CVkProto *proto) : CreateLink(m_cbClearServerHistory, m_proto->m_vkOptions.bClearServerHistory);
CreateLink(m_cbRemoveFromFrendlist, m_proto->m_vkOptions.bRemoveFromFrendlist);
CreateLink(m_cbRemoveFromCList, m_proto->m_vkOptions.bRemoveFromCList);
+#if (VK_NEW_API == 0)
CreateLink(m_edtReturnChatMessage, m_proto->m_vkOptions.pwszReturnChatMessage);
+#endif
m_cbForceInvisibleStatus.OnChange = Callback(this, &CVkOptionAdvancedForm::On_cbForceInvisibleStatusChange);
m_cbSendVKLinksAsAttachments.OnChange = Callback(this, &CVkOptionAdvancedForm::On_cbSendVKLinksAsAttachmentsChange);
diff --git a/protocols/VKontakte/src/vk_proto.h b/protocols/VKontakte/src/vk_proto.h index e04bbf73c2..958aa1e396 100644 --- a/protocols/VKontakte/src/vk_proto.h +++ b/protocols/VKontakte/src/vk_proto.h @@ -308,7 +308,9 @@ private: void OnReceiveGroupInfo(NETLIBHTTPREQUEST * reply, AsyncHttpRequest * pReq);
void RetrieveFriends(bool bCleanNonFriendContacts = false);
void OnReceiveFriends(NETLIBHTTPREQUEST*, AsyncHttpRequest*);
+#if (VK_NEW_API == 0)
void MarkMessagesRead(const CMStringA &mids);
+#endif
void MarkMessagesRead(const MCONTACT hContact);
void RetrieveMessagesByIds(const CMStringA &mids);
void RetrieveUnreadMessages();
@@ -390,10 +392,12 @@ private: void StopChatContactTyping(int iChatId, LONG iUserId);
void OnCreateNewChat(NETLIBHTTPREQUEST*, AsyncHttpRequest*);
CVkChatInfo* AppendConversationChat(int iChatId, const JSONNode& jnItem);
- CVkChatInfo* AppendChat(int id, const JSONNode &jnNode);
void SetChatTitle(CVkChatInfo *cc, LPCWSTR wszTopic);
void AppendChatConversationMessage(int id, const JSONNode& jnMsg, const JSONNode& jnFUsers, bool bIsHistory);
+#if (VK_NEW_API == 0)
+ CVkChatInfo* AppendChat(int id, const JSONNode& jnNode);
void AppendChatMessage(int id, const JSONNode &jnMsg, const JSONNode &jnFUsers, bool bIsHistory);
+#endif
void AppendChatMessage(CVkChatInfo *cc, LONG uid, int msgTime, LPCWSTR pwszBody, bool bIsHistory, bool bIsAction = false);
void RetrieveChatInfo(CVkChatInfo*);
void OnReceiveChatInfo(NETLIBHTTPREQUEST*, AsyncHttpRequest*);
diff --git a/protocols/VKontakte/src/vk_struct.cpp b/protocols/VKontakte/src/vk_struct.cpp index efec941c19..39f33c22d5 100644 --- a/protocols/VKontakte/src/vk_struct.cpp +++ b/protocols/VKontakte/src/vk_struct.cpp @@ -221,7 +221,9 @@ CVKOptions::CVKOptions(PROTO_INTERFACE* proto) : iStickerSize(proto, "StickerSize", 128),
pwszDefaultGroup(proto, "ProtoGroup", L"VKontakte"),
+#if (VK_NEW_API == 0)
pwszReturnChatMessage(proto, "ReturnChatMessage", TranslateT("I'm back")),
+#endif
pwszVKLang(proto, "VKLang", nullptr)
{
@@ -234,9 +236,7 @@ CVKOptions::CVKOptions(PROTO_INTERFACE* proto) : }
// Note
}
-
-
-
+#if (VK_NEW_API == 0)
////////////////////////////////////////////////////////////////////////////////////////////////////
void CVkUserItem::LoadFromUserProfile(const JSONNode &jnNode)
@@ -420,3 +420,5 @@ CVkUserItem::CVkUserItem(CVkProto* vkProto, const JSONNode &jnNode, vkJSONNodeTy m_hContact = m_bIsMUChat ? m_VK->FindChat(m_iChatId) : m_VK->FindUser(m_iUserId);
m_hContact = m_hContact ? m_hContact : INVALID_CONTACT_ID;
}
+
+#endif
\ No newline at end of file diff --git a/protocols/VKontakte/src/vk_struct.h b/protocols/VKontakte/src/vk_struct.h index e17a18ec9a..3660165f1f 100644 --- a/protocols/VKontakte/src/vk_struct.h +++ b/protocols/VKontakte/src/vk_struct.h @@ -316,7 +316,9 @@ struct CVKOptions { CMOption<DWORD> iStickerSize;
CMOption<wchar_t*> pwszDefaultGroup;
+#if (VK_NEW_API == 0)
CMOption<wchar_t*> pwszReturnChatMessage;
+#endif
CMOption<wchar_t*> pwszVKLang;
CVKOptions(PROTO_INTERFACE *proto);
@@ -345,7 +347,7 @@ struct CVKImageSizeItem { };
///////////////////////////////////////////////////////////////////////////////////////////////
-
+#if (VK_NEW_API == 0)
enum vkJSONNodeType { vkJSONTypeProfile = 0, vkJSONTypeGroup, vkJSONTypeConversation };
class CVkUserItem : public MZeroedObject {
@@ -425,4 +427,4 @@ class CVkUserItem : public MZeroedObject { };
-
+#endif
|