diff options
| author | George Hazan <ghazan@miranda.im> | 2018-12-29 22:19:43 +0300 |
|---|---|---|
| committer | George Hazan <ghazan@miranda.im> | 2018-12-29 22:19:43 +0300 |
| commit | ad3174415c91079ff97c73de835aa81573724343 (patch) | |
| tree | 5f49f630229b1381fa4e1ca7d025171304e2465e /protocols/Icq10/src/server.cpp | |
| parent | 8b5aedc9a9697f4138017fd0ecb40b5a6fcbc279 (diff) | |
fixes #1686 (ICQ10: implement own avatar changing)
Diffstat (limited to 'protocols/Icq10/src/server.cpp')
| -rw-r--r-- | protocols/Icq10/src/server.cpp | 43 |
1 files changed, 21 insertions, 22 deletions
diff --git a/protocols/Icq10/src/server.cpp b/protocols/Icq10/src/server.cpp index 39a74bdfd1..1889f56a94 100644 --- a/protocols/Icq10/src/server.cpp +++ b/protocols/Icq10/src/server.cpp @@ -22,6 +22,20 @@ #pragma comment(lib, "libeay32.lib") +void CIcqProto::CheckAvatarChange(MCONTACT hContact, const JSONNode &ev) +{ + CMStringW wszIconId(ev["iconId"].as_mstring()); + CMStringW oldIconID(getMStringW(hContact, "IconId")); + if (wszIconId != oldIconID) { + setWString(hContact, "IconId", wszIconId); + + CMStringA szUrl(ev["buddyIcon"].as_mstring()); + auto *p = new AsyncHttpRequest(CONN_MAIN, REQUEST_GET, szUrl, &CIcqProto::OnReceiveAvatar); + p->pUserInfo = (void*)hContact; + Push(p); + } +} + void CIcqProto::CheckPassword() { char mirVer[100]; @@ -102,17 +116,7 @@ MCONTACT CIcqProto::ParseBuddyInfo(const JSONNode &buddy) else db_set_ws(hContact, "CList", "StatusMsg", str); - CMStringW wszIconId(buddy["iconId"].as_mstring()); - CMStringW oldIconID(getMStringW(hContact, "IconId")); - if (wszIconId != oldIconID) { - setWString(hContact, "IconId", wszIconId); - - CMStringA szUrl(buddy["buddyIcon"].as_mstring()); - auto *p = new AsyncHttpRequest(CONN_MAIN, REQUEST_GET, szUrl, &CIcqProto::OnReceiveAvatar); - p->pUserInfo = (void*)hContact; - Push(p); - } - + CheckAvatarChange(hContact, buddy); return hContact; } @@ -520,24 +524,19 @@ void CIcqProto::ProcessMyInfo(const JSONNode &ev) if (!wszNick.IsEmpty()) setWString("Nick", wszNick); - CMStringW wszIconId(ev["iconId"].as_mstring()); - CMStringW oldIconID(getMStringW("IconId")); - if (wszIconId != oldIconID) { - setWString("IconId", wszIconId); - - CMStringA szUrl(ev["buddyIcon"].as_mstring()); - Push(new AsyncHttpRequest(CONN_MAIN, REQUEST_GET, szUrl, &CIcqProto::OnReceiveAvatar)); - } + CheckAvatarChange(0, ev); } void CIcqProto::ProcessPresence(const JSONNode &ev) { DWORD dwUin = _wtol(ev["aimId"].as_mstring()); - int iStatus = StatusFromString(ev["state"].as_mstring()); IcqCacheItem *pCache = FindContactByUIN(dwUin); - if (pCache) - setDword(pCache->m_hContact, "Status", iStatus); + if (pCache) { + setDword(pCache->m_hContact, "Status", StatusFromString(ev["state"].as_mstring())); + + CheckAvatarChange(pCache->m_hContact, ev); + } } void CIcqProto::ProcessTyping(const JSONNode &ev) |
