summaryrefslogtreecommitdiff
path: root/protocols/WhatsApp/src
diff options
context:
space:
mode:
authorGeorge Hazan <george.hazan@gmail.com>2015-02-08 13:30:36 +0000
committerGeorge Hazan <george.hazan@gmail.com>2015-02-08 13:30:36 +0000
commit149298bd03dcfce00815d798c9f670e8ea24e7e0 (patch)
treef9fa1a9215fca876599e465e278afaa21b22d73e /protocols/WhatsApp/src
parent8be3a7a616f0739959fb0d4f5266973510bd4142 (diff)
support for private messages in chats
git-svn-id: http://svn.miranda-ng.org/main/trunk@12055 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'protocols/WhatsApp/src')
-rw-r--r--protocols/WhatsApp/src/chat.cpp24
-rw-r--r--protocols/WhatsApp/src/contacts.cpp5
-rw-r--r--protocols/WhatsApp/src/proto.cpp6
-rw-r--r--protocols/WhatsApp/src/proto.h1
-rw-r--r--protocols/WhatsApp/src/version.h2
5 files changed, 25 insertions, 13 deletions
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<WhatsAppProto>(proto_name, username)
+ PROTO<WhatsAppProto>(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<unsigned char> 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 <stdver.h>