summaryrefslogtreecommitdiff
path: root/protocols/Icq10/src/server.cpp
diff options
context:
space:
mode:
authorGeorge Hazan <ghazan@miranda.im>2018-12-29 22:19:43 +0300
committerGeorge Hazan <ghazan@miranda.im>2018-12-29 22:19:43 +0300
commitad3174415c91079ff97c73de835aa81573724343 (patch)
tree5f49f630229b1381fa4e1ca7d025171304e2465e /protocols/Icq10/src/server.cpp
parent8b5aedc9a9697f4138017fd0ecb40b5a6fcbc279 (diff)
fixes #1686 (ICQ10: implement own avatar changing)
Diffstat (limited to 'protocols/Icq10/src/server.cpp')
-rw-r--r--protocols/Icq10/src/server.cpp43
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)