diff options
Diffstat (limited to 'protocols')
| -rw-r--r-- | protocols/JabberG/src/jabber_iqid.cpp | 12 | ||||
| -rw-r--r-- | protocols/SkypeWeb/src/skype_contacts.cpp | 7 | ||||
| -rw-r--r-- | protocols/SkypeWeb/src/skype_profile.cpp | 5 | ||||
| -rw-r--r-- | protocols/Telegram/src/proto.cpp | 12 | ||||
| -rw-r--r-- | protocols/Telegram/src/proto.h | 1 | ||||
| -rw-r--r-- | protocols/Telegram/src/server.cpp | 7 | ||||
| -rw-r--r-- | protocols/VKontakte/src/vk_thread.cpp | 8 |
7 files changed, 22 insertions, 30 deletions
diff --git a/protocols/JabberG/src/jabber_iqid.cpp b/protocols/JabberG/src/jabber_iqid.cpp index 5e0a2b47ed..431f9d26a0 100644 --- a/protocols/JabberG/src/jabber_iqid.cpp +++ b/protocols/JabberG/src/jabber_iqid.cpp @@ -760,17 +760,7 @@ void CJabberProto::OnIqResultGetVcard(const TiXmlElement *iqNode, CJabberIqInfo* if (hContact != 0) {
if (sscanf(n->GetText(), "%d-%d-%d", &nYear, &nMonth, &nDay) == 3) {
hasBday = true;
- setWord(hContact, "BirthYear", (uint16_t)nYear);
- setByte(hContact, "BirthMonth", (uint8_t)nMonth);
- setByte(hContact, "BirthDay", (uint8_t)nDay);
-
- SYSTEMTIME sToday = { 0 };
- GetLocalTime(&sToday);
- int nAge = sToday.wYear - nYear;
- if (sToday.wMonth < nMonth || (sToday.wMonth == nMonth && sToday.wDay < nDay))
- nAge--;
- if (nAge)
- setWord(hContact, "Age", (uint16_t)nAge);
+ Contact::SetBirthday(hContact, nDay, nMonth, nYear);
}
}
else {
diff --git a/protocols/SkypeWeb/src/skype_contacts.cpp b/protocols/SkypeWeb/src/skype_contacts.cpp index a96a25262d..daed188bb2 100644 --- a/protocols/SkypeWeb/src/skype_contacts.cpp +++ b/protocols/SkypeWeb/src/skype_contacts.cpp @@ -189,11 +189,8 @@ void CSkypeProto::LoadContactList(MHttpResponse *response, AsyncHttpRequest*) auto wstr = profile["birthday"].as_mstring();
if (!wstr.IsEmpty() ) {
int nYear, nMonth, nDay;
- if (swscanf(wstr, L"%d-%d-%d", &nYear, &nMonth, &nDay) == 3) {
- setWord(hContact, "BirthYear", nYear);
- setByte(hContact, "BirthMonth", nMonth);
- setByte(hContact, "BirthDay", nDay);
- }
+ if (swscanf(wstr, L"%d-%d-%d", &nYear, &nMonth, &nDay) == 3)
+ Contact::SetBirthday(hContact, nDay, nMonth, nYear);
}
wstr = profile["gender"].as_mstring();
diff --git a/protocols/SkypeWeb/src/skype_profile.cpp b/protocols/SkypeWeb/src/skype_profile.cpp index f6ca94ef30..5bfcd49513 100644 --- a/protocols/SkypeWeb/src/skype_profile.cpp +++ b/protocols/SkypeWeb/src/skype_profile.cpp @@ -50,9 +50,8 @@ void CSkypeProto::UpdateProfileBirthday(const JSONNode &root, MCONTACT hContact) if (!birthday.IsEmpty() && birthday != "null") {
int d, m, y;
if (3 == swscanf(birthday.GetBuffer(), L"%d-%d-%d", &y, &m, &d)) {
- setWord(hContact, "BirthYear", y);
- setByte(hContact, "BirthDay", d);
- setByte(hContact, "BirthMonth", m);
+ Contact::SetBirthday(hContact, d, m, y);
+ return;
}
}
diff --git a/protocols/Telegram/src/proto.cpp b/protocols/Telegram/src/proto.cpp index 3732e1a5e5..327cc9a090 100644 --- a/protocols/Telegram/src/proto.cpp +++ b/protocols/Telegram/src/proto.cpp @@ -635,6 +635,11 @@ HANDLE CTelegramProto::SendFile(MCONTACT hContact, const wchar_t *szDescription, ///////////////////////////////////////////////////////////////////////////////////////// +void CTelegramProto::OnChatCreated(td::ClientManager::Response &response, void *pUserInfo) +{ + SetEvent(pUserInfo); +} + int CTelegramProto::SendMsg(MCONTACT hContact, MEVENT hReplyEvent, const char *pszMessage) { ptrA szId(getStringA(hContact, DBKEY_ID)); @@ -653,6 +658,13 @@ int CTelegramProto::SendMsg(MCONTACT hContact, MEVENT hReplyEvent, const char *p iReplyId = dbei2id(dbei); } + if (pUser->chatId == -1) { + HANDLE hEvent = ::CreateEvent(0, TRUE, FALSE, 0); + SendQuery(new TD::createNewPrivateChat(pUser->id, false), &CTelegramProto::OnChatCreated, hEvent); + WaitForSingleObject(hEvent, INFINITE); + CloseHandle(hEvent); + } + int msgid = SendTextMessage(pUser->chatId, 0, iReplyId, pszMessage); if (msgid != -1) m_arOwnMsg.insert(new TG_OWN_MESSAGE(hContact, (HANDLE)msgid, "")); diff --git a/protocols/Telegram/src/proto.h b/protocols/Telegram/src/proto.h index 29cc8b3654..c8a607eccc 100644 --- a/protocols/Telegram/src/proto.h +++ b/protocols/Telegram/src/proto.h @@ -233,6 +233,7 @@ class CTelegramProto : public PROTO<CTelegramProto> } void OnAvatarSet(td::ClientManager::Response &response, void *pUserInfo); + void OnChatCreated(td::ClientManager::Response &response, void *pUserInfo); void OnEndSession(td::ClientManager::Response &response); void OnGetFileInfo(td::ClientManager::Response &response, void *pUserInfo); void OnGetFileLink(td::ClientManager::Response &response); diff --git a/protocols/Telegram/src/server.cpp b/protocols/Telegram/src/server.cpp index 20d55e04a9..fdec9f3046 100644 --- a/protocols/Telegram/src/server.cpp +++ b/protocols/Telegram/src/server.cpp @@ -1328,11 +1328,8 @@ void CTelegramProto::ProcessUser(TD::updateUser *pObj) void CTelegramProto::ProcessUserInfo(TD::int53 userId, TD::userFullInfo *pObj)
{
if (auto *pUser = FindUser(userId)) {
- if (auto *pBirthday = pObj->birthdate_.get()) {
- setWord(pUser->hContact, "BirthDay", pBirthday->day_);
- setWord(pUser->hContact, "BirthMonth", pBirthday->month_);
- setWord(pUser->hContact, "BirthYear", pBirthday->year_);
- }
+ if (auto *pBirthday = pObj->birthdate_.get())
+ Contact::SetBirthday(pUser->hContact, pBirthday->day_, pBirthday->month_, pBirthday->year_);
if (pObj->bio_) {
CMStringA szNotes(GetFormattedText(pObj->bio_));
diff --git a/protocols/VKontakte/src/vk_thread.cpp b/protocols/VKontakte/src/vk_thread.cpp index ba92c7ff06..890701e068 100644 --- a/protocols/VKontakte/src/vk_thread.cpp +++ b/protocols/VKontakte/src/vk_thread.cpp @@ -368,12 +368,8 @@ MCONTACT CVkProto::SetContactInfo(const JSONNode &jnItem, bool bFlag, VKContactT if (!wszValue.IsEmpty()) {
int d, m, y, iReadCount;
iReadCount = swscanf(wszValue, L"%d.%d.%d", &d, &m, &y);
- if (iReadCount > 1) {
- if (iReadCount == 3)
- setWord(hContact, "BirthYear", y);
- setByte(hContact, "BirthDay", d);
- setByte(hContact, "BirthMonth", m);
- }
+ if (iReadCount > 1)
+ Contact::SetBirthday(hContact, d, m, (iReadCount == 3) ? y : 0);
}
wszValue = jnItem["photo_100"].as_mstring();
|
