From 355f69d42075967db7f51081f9520fed3ea9a801 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20P=C3=B6sel?= Date: Thu, 4 Dec 2014 06:53:31 +0000 Subject: Steam: Reworked avatars support; version bump This result in downloading avatars only when changed and not at every login git-svn-id: http://svn.miranda-ng.org/main/trunk@11236 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- protocols/Steam/src/steam_contacts.cpp | 31 ++++++++++++++----------------- 1 file changed, 14 insertions(+), 17 deletions(-) (limited to 'protocols/Steam/src/steam_contacts.cpp') diff --git a/protocols/Steam/src/steam_contacts.cpp b/protocols/Steam/src/steam_contacts.cpp index 7354fa3395..8116588f0a 100644 --- a/protocols/Steam/src/steam_contacts.cpp +++ b/protocols/Steam/src/steam_contacts.cpp @@ -94,13 +94,8 @@ void CSteamProto::UpdateContact(MCONTACT hContact, JSONNODE *data) // avatar node = json_get(data, "avatarfull"); - ptrA avatarUrl(mir_u2a(json_as_string(node))); - setString(hContact, "AvatarUrl", avatarUrl); - - PushRequest( - new SteamWebApi::GetAvatarRequest(avatarUrl), - &CSteamProto::OnGotAvatar, - (void*)hContact); + std::string avatarUrl = _T2A(json_as_string(node)); + CheckAvatarChange(hContact, avatarUrl); // set country node = json_get(data, "loccountrycode"); @@ -317,28 +312,30 @@ void CSteamProto::OnGotUserSummaries(const NETLIBHTTPREQUEST *response, void *ar void CSteamProto::OnGotAvatar(const NETLIBHTTPREQUEST *response, void *arg) { - MCONTACT hContact = (MCONTACT)arg; + PROTO_AVATAR_INFORMATIONW pai = { sizeof(pai) }; + pai.hContact = (MCONTACT)arg; + GetDbAvatarInfo(pai); if (response == NULL || response->resultCode != HTTP_STATUS_OK) { - ptrA steamId(getStringA(hContact, "SteamID")); + ptrA steamId(getStringA(pai.hContact, "SteamID")); debugLogA("CSteamProto::OnGotAvatar: failed to get avatar %s", steamId); + + if (pai.hContact) + ProtoBroadcastAck(pai.hContact, ACKTYPE_AVATAR, ACKRESULT_FAILED, (HANDLE)&pai, 0); return; } - ptrW avatarPath(GetAvatarFilePath(hContact)); - FILE *fp = _wfopen(avatarPath, L"wb"); + FILE *fp = _tfopen(pai.filename, _T("wb")); if (fp) { fwrite(response->pData, sizeof(char), response->dataLength, fp); fclose(fp); - PROTO_AVATAR_INFORMATIONW pai = { sizeof(pai) }; - pai.format = PA_FORMAT_JPEG; - pai.hContact = hContact; - wcscpy(pai.filename, avatarPath); - - ProtoBroadcastAck(hContact, ACKTYPE_AVATAR, ACKRESULT_SUCCESS, (HANDLE)&pai, 0); + if (pai.hContact) + ProtoBroadcastAck(pai.hContact, ACKTYPE_AVATAR, ACKRESULT_SUCCESS, (HANDLE)&pai, 0); + else + CallService(MS_AV_REPORTMYAVATARCHANGED, (WPARAM)m_szModuleName, 0); } } -- cgit v1.2.3