From 518e9a70f554179f344510f594d7d759b56cea58 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Thu, 29 Jan 2015 16:24:44 +0000 Subject: fix for the automatic nick name extraction git-svn-id: http://svn.miranda-ng.org/main/trunk@11951 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- protocols/WhatsApp/src/WhatsAPI++/WAConnection.cpp | 14 ++++------ protocols/WhatsApp/src/contacts.cpp | 14 ++++------ protocols/WhatsApp/src/dialogs.cpp | 30 ++++++++------------ protocols/WhatsApp/src/messages.cpp | 32 +++++++++++++--------- protocols/WhatsApp/src/version.h | 2 +- 5 files changed, 44 insertions(+), 48 deletions(-) (limited to 'protocols/WhatsApp') diff --git a/protocols/WhatsApp/src/WhatsAPI++/WAConnection.cpp b/protocols/WhatsApp/src/WhatsAPI++/WAConnection.cpp index 9aa4450937..fcb659e97b 100644 --- a/protocols/WhatsApp/src/WhatsAPI++/WAConnection.cpp +++ b/protocols/WhatsApp/src/WhatsAPI++/WAConnection.cpp @@ -195,12 +195,8 @@ bool WAConnection::read() throw(WAException) if (node == NULL) return false; - #ifdef _DEBUG - { - string tmp = node->toString(); - rawConn->log(tmp.c_str()); - } - #endif + string tmp = node->toString(); + rawConn->log(tmp.c_str()); if (ProtocolTreeNode::tagEquals(node, "iq")) parseIq(node); @@ -307,6 +303,7 @@ void WAConnection::parseMessage(ProtocolTreeNode *messageNode) throw (WAExceptio const string &id = messageNode->getAttributeValue("id"); const string &attribute_t = messageNode->getAttributeValue("t"); const string &from = messageNode->getAttributeValue("from"); + const string ¬ify = messageNode->getAttributeValue("notify"); const string &author = messageNode->getAttributeValue("author"); const string &typeAttribute = messageNode->getAttributeValue("type"); @@ -343,7 +340,7 @@ void WAConnection::parseMessage(ProtocolTreeNode *messageNode) throw (WAExceptio if (receiptRequested) sendSubjectReceived(from, id); } - else if (typeAttribute == "chat" || typeAttribute == "text") { + else if (typeAttribute == "text") { FMessage fmessage; fmessage.wants_receipt = false; fmessage.timestamp = atoi(attribute_t.c_str()); @@ -354,7 +351,7 @@ void WAConnection::parseMessage(ProtocolTreeNode *messageNode) throw (WAExceptio ProtocolTreeNode *childNode = messageChildren[i]; if (ProtocolTreeNode::tagEquals(childNode, "body")) { fmessage.key = Key(from, false, id); - fmessage.remote_resource = author; + fmessage.notifyname = notify; fmessage.data = childNode->getDataAsString(); fmessage.status = FMessage::STATUS_UNSENT; } @@ -395,6 +392,7 @@ void WAConnection::parseMessage(ProtocolTreeNode *messageNode) throw (WAExceptio } fmessage.key = Key(from, false, id); + fmessage.notifyname = notify; fmessage.remote_resource = author; } } diff --git a/protocols/WhatsApp/src/contacts.cpp b/protocols/WhatsApp/src/contacts.cpp index 0250420ed2..487afc6321 100644 --- a/protocols/WhatsApp/src/contacts.cpp +++ b/protocols/WhatsApp/src/contacts.cpp @@ -28,9 +28,10 @@ MCONTACT WhatsAppProto::AddToContactList(const std::string& jid, BYTE , bool don oldName = dbv.pszVal; db_free(&dbv); } - db_set_utf(hContact, m_szModuleName, WHATSAPP_KEY_NICK, new_name); if (oldName.compare(string(new_name)) != 0) { + db_set_utf(hContact, m_szModuleName, WHATSAPP_KEY_NICK, new_name); + CMString tmp(FORMAT, TranslateT("is now known as '%s'"), ptrT(mir_utf8decodeT(new_name))); this->NotifyEvent(_A2T(oldName.c_str()), tmp, hContact, WHATSAPP_EVENT_OTHER); } @@ -496,13 +497,10 @@ INT_PTR __cdecl WhatsAppProto::OnChangeGroupSubject(WPARAM hContact, LPARAM lPar { input_box* ib = new input_box; - DBVARIANT dbv; - if (getTString(hContact, WHATSAPP_KEY_NICK, &dbv)) - ib->defaultValue = _T(""); - else { - ib->defaultValue = dbv.ptszVal; - db_free(&dbv); - } + ptrT szNick(getTStringA(hContact, WHATSAPP_KEY_NICK)); + if (szNick != NULL) + ib->defaultValue = szNick; + ib->limit = WHATSAPP_GROUP_NAME_LIMIT; ib->text = _T("Enter new group subject"); ib->title = _T("WhatsApp - Change Group Subject"); diff --git a/protocols/WhatsApp/src/dialogs.cpp b/protocols/WhatsApp/src/dialogs.cpp index e00b69196e..0550dc4102 100644 --- a/protocols/WhatsApp/src/dialogs.cpp +++ b/protocols/WhatsApp/src/dialogs.cpp @@ -16,21 +16,16 @@ INT_PTR CALLBACK WhatsAppAccountProc(HWND hwndDlg, UINT message, WPARAM wparam, SendDlgItemMessage(hwndDlg, IDC_PW, EM_LIMITTEXT, 3, 0); SendDlgItemMessage(hwndDlg, IDC_PW2, EM_LIMITTEXT, 3, 0); CheckDlgButton(hwndDlg, IDC_SSL, db_get_b(NULL, proto->m_szModuleName, WHATSAPP_KEY_SSL, 0) ? BST_CHECKED : BST_UNCHECKED); - DBVARIANT dbv; + { + ptrA szStr(proto->getStringA(WHATSAPP_KEY_CC)); + if (szStr != NULL) + SetDlgItemTextA(hwndDlg, IDC_CC, szStr); - if (!db_get_s(0, proto->m_szModuleName, WHATSAPP_KEY_CC, &dbv, DBVT_ASCIIZ)) { - SetDlgItemTextA(hwndDlg, IDC_CC, dbv.pszVal); - db_free(&dbv); - } - - if (!db_get_s(0, proto->m_szModuleName, WHATSAPP_KEY_LOGIN, &dbv, DBVT_ASCIIZ)) { - SetDlgItemTextA(hwndDlg, IDC_LOGIN, dbv.pszVal); - db_free(&dbv); - } + if ((szStr = proto->getStringA(WHATSAPP_KEY_LOGIN)) != NULL) + SetDlgItemTextA(hwndDlg, IDC_LOGIN, szStr); - if (!db_get_s(0, proto->m_szModuleName, WHATSAPP_KEY_NICK, &dbv, DBVT_ASCIIZ)) { - SetDlgItemTextA(hwndDlg, IDC_NICK, dbv.pszVal); - db_free(&dbv); + if ((szStr = proto->getStringA(WHATSAPP_KEY_NICK)) != NULL) + SetDlgItemTextA(hwndDlg, IDC_NICK, szStr); } EnableWindow(GetDlgItem(hwndDlg, IDC_PW), FALSE); @@ -44,7 +39,6 @@ INT_PTR CALLBACK WhatsAppAccountProc(HWND hwndDlg, UINT message, WPARAM wparam, SendDlgItemMessage(hwndDlg, IDC_PW2, EM_SETREADONLY, 1, 0); EnableWindow(GetDlgItem(hwndDlg, IDC_SSL), FALSE); } - return TRUE; case WM_COMMAND: @@ -108,15 +102,15 @@ INT_PTR CALLBACK WhatsAppAccountProc(HWND hwndDlg, UINT message, WPARAM wparam, char str[128]; GetDlgItemTextA(hwndDlg, IDC_CC, str, SIZEOF(str)); - db_set_s(0, proto->m_szModuleName, WHATSAPP_KEY_CC, str); + proto->setString(WHATSAPP_KEY_CC, str); GetDlgItemTextA(hwndDlg, IDC_LOGIN, str, SIZEOF(str)); - db_set_s(0, proto->m_szModuleName, WHATSAPP_KEY_LOGIN, str); + proto->setString(WHATSAPP_KEY_LOGIN, str); GetDlgItemTextA(hwndDlg, IDC_NICK, str, SIZEOF(str)); - db_set_s(0, proto->m_szModuleName, WHATSAPP_KEY_NICK, str); + proto->setString(WHATSAPP_KEY_NICK, str); - db_set_b(0, proto->m_szModuleName, WHATSAPP_KEY_SSL, IsDlgButtonChecked(hwndDlg, IDC_SSL)); + proto->setByte(WHATSAPP_KEY_SSL, IsDlgButtonChecked(hwndDlg, IDC_SSL)); return TRUE; } break; diff --git a/protocols/WhatsApp/src/messages.cpp b/protocols/WhatsApp/src/messages.cpp index d2f170a020..37b2ebad65 100644 --- a/protocols/WhatsApp/src/messages.cpp +++ b/protocols/WhatsApp/src/messages.cpp @@ -121,18 +121,24 @@ void WhatsAppProto::onMessageStatusUpdate(FMessage* fmsg) if (hContact == 0) return; - if (fmsg->status == FMessage::STATUS_RECEIVED_BY_SERVER) { - size_t delim = fmsg->key.id.find('-'); - if (delim == string::npos) - return; - - int msgId = atoi(fmsg->key.id.substr(delim+1).c_str()); - ProtoBroadcastAck(hContact, ACKTYPE_MESSAGE, ACKRESULT_SUCCESS, (HANDLE)msgId, 0); - - time_t timestamp = atol(fmsg->key.id.substr(0, delim).c_str()); - - TCHAR ttime[64]; - _tcsftime(ttime, SIZEOF(ttime), _T("%X"), localtime(×tamp)); - utils::setStatusMessage(hContact, CMString(FORMAT, TranslateT("Message received: %s by %s"), ttime, pcli->pfnGetContactDisplayName(hContact, 0))); + const TCHAR *ptszBy; + switch (fmsg->status) { + case FMessage::STATUS_RECEIVED_BY_SERVER: ptszBy = TranslateT("server"); break; + case FMessage::STATUS_RECEIVED_BY_TARGET: ptszBy = pcli->pfnGetContactDisplayName(hContact, 0); break; + default: + return; } + + size_t delim = fmsg->key.id.find('-'); + if (delim == string::npos) + return; + + int msgId = atoi(fmsg->key.id.substr(delim+1).c_str()); + ProtoBroadcastAck(hContact, ACKTYPE_MESSAGE, ACKRESULT_SUCCESS, (HANDLE)msgId, 0); + + time_t timestamp = atol(fmsg->key.id.substr(0, delim).c_str()); + + TCHAR ttime[64]; + _tcsftime(ttime, SIZEOF(ttime), _T("%X"), localtime(×tamp)); + utils::setStatusMessage(hContact, CMString(FORMAT, TranslateT("Message received: %s by %s"), ttime, ptszBy)); } diff --git a/protocols/WhatsApp/src/version.h b/protocols/WhatsApp/src/version.h index 6d60ffbd86..f762aa15d7 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 4 +#define __BUILD_NUM 5 #include -- cgit v1.2.3