From 149298bd03dcfce00815d798c9f670e8ea24e7e0 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Sun, 8 Feb 2015 13:30:36 +0000 Subject: support for private messages in chats git-svn-id: http://svn.miranda-ng.org/main/trunk@12055 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- protocols/WhatsApp/src/chat.cpp | 24 +++++++++++++++++------- protocols/WhatsApp/src/contacts.cpp | 5 +---- protocols/WhatsApp/src/proto.cpp | 6 +++++- protocols/WhatsApp/src/proto.h | 1 + protocols/WhatsApp/src/version.h | 2 +- 5 files changed, 25 insertions(+), 13 deletions(-) (limited to 'protocols/WhatsApp/src') diff --git a/protocols/WhatsApp/src/chat.cpp b/protocols/WhatsApp/src/chat.cpp index 28f0629f9b..c34f9e8e1b 100644 --- a/protocols/WhatsApp/src/chat.cpp +++ b/protocols/WhatsApp/src/chat.cpp @@ -49,10 +49,6 @@ int WhatsAppProto::onGroupChatEvent(WPARAM wParam, LPARAM lParam) return 0; switch (gch->pDest->iType) { - case GC_USER_LEAVE: - case GC_SESSION_TERMINATE: - break; - case GC_USER_LOGMENU: ChatLogMenuHook(pInfo, gch); break; @@ -80,6 +76,20 @@ int WhatsAppProto::onGroupChatEvent(WPARAM wParam, LPARAM lParam) CODE_BLOCK_CATCH_ALL } break; + + case GC_USER_PRIVMESS: + string jid = string(_T2A(gch->ptszUID)) + "@s.whatsapp.net"; + MCONTACT hContact = ContactIDToHContact(jid); + if (hContact == 0) { + hContact = AddToContactList(jid, (char*)_T2A(gch->ptszUID)); + setWord(hContact, "Status", ID_STATUS_ONLINE); + + db_set_b(hContact, "CList", "Hidden", 1); + setTString(hContact, "Nick", gch->ptszUID); + db_set_dw(hContact, "Ignore", "Mask1", 0); + } + CallService(MS_MSG_SENDMESSAGE, hContact, 0); + break; } return 0; @@ -160,7 +170,7 @@ void WhatsAppProto::InviteChatUser(WAChatInfo *pInfo) ///////////////////////////////////////////////////////////////////////////////////////// // nicklist menu event handler -static gc_item sttListItems[] = +static gc_item sttNickListItems[] = { { LPGENT("&Add to roster"), IDM_ADD_RJID, MENU_POPUPITEM }, { NULL, 0, MENU_SEPARATOR }, @@ -239,8 +249,8 @@ int WhatsAppProto::OnChatMenu(WPARAM wParam, LPARAM lParam) gcmi->Item = sttLogListItems; } else if (gcmi->Type == MENU_ON_NICKLIST) { - gcmi->nItems = SIZEOF(sttListItems); - gcmi->Item = sttListItems; + gcmi->nItems = SIZEOF(sttNickListItems); + gcmi->Item = sttNickListItems; } return 0; diff --git a/protocols/WhatsApp/src/contacts.cpp b/protocols/WhatsApp/src/contacts.cpp index e1a3a33bf1..d1146a5ca6 100644 --- a/protocols/WhatsApp/src/contacts.cpp +++ b/protocols/WhatsApp/src/contacts.cpp @@ -42,10 +42,7 @@ MCONTACT WhatsAppProto::AddToContactList(const std::string &jid, const char *new setString(hContact, "MirVer", "WhatsApp"); db_unset(hContact, "CList", "MyHandle"); db_set_b(hContact, "CList", "NotOnList", 1); - - ptrT tszGroup(getTStringA(WHATSAPP_KEY_DEF_GROUP)); - if (tszGroup) - db_set_ts(hContact, "CList", "Group", tszGroup); + db_set_ts(hContact, "CList", "Group", m_defaultGroup); if (new_name != NULL) db_set_utf(hContact, m_szModuleName, WHATSAPP_KEY_NICK, new_name); diff --git a/protocols/WhatsApp/src/proto.cpp b/protocols/WhatsApp/src/proto.cpp index ca412a77e8..c202503703 100644 --- a/protocols/WhatsApp/src/proto.cpp +++ b/protocols/WhatsApp/src/proto.cpp @@ -13,7 +13,8 @@ struct SearchParam }; WhatsAppProto::WhatsAppProto(const char* proto_name, const TCHAR* username) : - PROTO(proto_name, username) + PROTO(proto_name, username), + m_defaultGroup(getTStringA(WHATSAPP_KEY_DEF_GROUP)) { update_loop_lock_ = CreateEvent(NULL, false, false, NULL); @@ -49,6 +50,9 @@ WhatsAppProto::WhatsAppProto(const char* proto_name, const TCHAR* username) : if (dwAttributes == 0xffffffff || (dwAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0) CreateDirectoryTreeT(m_tszAvatarFolder.c_str()); + if (m_defaultGroup == NULL) + m_defaultGroup = mir_tstrdup(_T("WhatsApp")); + SetAllContactStatuses(ID_STATUS_OFFLINE, true); } diff --git a/protocols/WhatsApp/src/proto.h b/protocols/WhatsApp/src/proto.h index b07d8aed87..8702f2c060 100644 --- a/protocols/WhatsApp/src/proto.h +++ b/protocols/WhatsApp/src/proto.h @@ -172,6 +172,7 @@ private: WAConnection *m_pConnection; Mutex connMutex; time_t m_tLastWriteTime; + ptrT m_defaultGroup; std::vector m_Challenge; std::string m_szPhoneNumber; diff --git a/protocols/WhatsApp/src/version.h b/protocols/WhatsApp/src/version.h index 6f591420cd..3475fe9955 100644 --- a/protocols/WhatsApp/src/version.h +++ b/protocols/WhatsApp/src/version.h @@ -1,7 +1,7 @@ #define __MAJOR_VERSION 0 #define __MINOR_VERSION 1 #define __RELEASE_NUM 2 -#define __BUILD_NUM 7 +#define __BUILD_NUM 8 #include -- cgit v1.2.3