From b80be7b3bbfae105935f49c34e9e64f1760ad08e Mon Sep 17 00:00:00 2001 From: Alexander Lantsev <aunsane@gmail.com> Date: Wed, 9 Apr 2014 17:48:27 +0000 Subject: Steam: fixed contacts loading git-svn-id: http://svn.miranda-ng.org/main/trunk@8903 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- protocols/Steam/src/Steam/friend_list.h | 8 ++++---- protocols/Steam/src/steam_account.cpp | 30 +++++++++++++++++++++++------- protocols/Steam/src/steam_contacts.cpp | 2 ++ 3 files changed, 29 insertions(+), 11 deletions(-) (limited to 'protocols/Steam/src') diff --git a/protocols/Steam/src/Steam/friend_list.h b/protocols/Steam/src/Steam/friend_list.h index 59df8918b0..160e3a0df5 100644 --- a/protocols/Steam/src/Steam/friend_list.h +++ b/protocols/Steam/src/Steam/friend_list.h @@ -11,12 +11,12 @@ namespace SteamWebApi friend FriendListApi; private: - std::vector<std::string> friendIds; + std::vector<std::string> items; public: - int GetCount() const { return friendIds.size(); } + int GetItemCount() const { return items.size(); } - const char * operator[](int idx) const { return friendIds.at(idx).c_str(); } + const char *GetAt(int idx) const { return items.at(idx).c_str(); } }; static void Load(HANDLE hConnection, const char *token, const char *steamId, FriendList *friendList) @@ -47,7 +47,7 @@ namespace SteamWebApi break; node = json_get(child, "steamid"); - friendList->friendIds + friendList->items .push_back((char*)ptrA(mir_u2a(json_as_string(node)))); } } diff --git a/protocols/Steam/src/steam_account.cpp b/protocols/Steam/src/steam_account.cpp index 812b9a75b5..523c5f09f2 100644 --- a/protocols/Steam/src/steam_account.cpp +++ b/protocols/Steam/src/steam_account.cpp @@ -171,15 +171,31 @@ void CSteamProto::LogInThread(void* param) if (friendList.IsSuccess()) { - for (int i = 0; i < friendList.GetCount(); i++) + CMStringA newContacts; + for (int i = 0; i < friendList.GetItemCount(); i++) { - if (!FindContact(friendList[i])) + const char * steamId = friendList.GetAt(i); + if (!FindContact(steamId)) { - // todo - /*SteamWebApi::FriendApi::Friend rFriend; - SteamWebApi::FriendApi::LoadSummaries(m_hNetlibUser, token, friendList[i], &rFriend); - if (!rFriend.IsSuccess()) continue; - AddContact(rFriend);*/ + if (newContacts.IsEmpty()) + newContacts.Append(steamId); + else + newContacts.AppendFormat(",%s", steamId); + } + } + + if (!newContacts.IsEmpty()) + { + SteamWebApi::FriendApi::Summaries summaries; + SteamWebApi::FriendApi::LoadSummaries(m_hNetlibUser, token, newContacts, &summaries); + + if (summaries.IsSuccess()) + { + for (int i = 0; i < summaries.GetItemCount(); i++) + { + const SteamWebApi::FriendApi::Summary *summary = summaries.GetAt(i); + AddContact(summary); + } } } } diff --git a/protocols/Steam/src/steam_contacts.cpp b/protocols/Steam/src/steam_contacts.cpp index 6038ca029c..3aba838dfc 100644 --- a/protocols/Steam/src/steam_contacts.cpp +++ b/protocols/Steam/src/steam_contacts.cpp @@ -105,6 +105,8 @@ MCONTACT CSteamProto::AddContact(const SteamWebApi::FriendApi::Summary *contact) hContact = (MCONTACT)CallService(MS_DB_CONTACT_ADD, 0, 0); CallService(MS_PROTO_ADDTOCONTACT, hContact, (LPARAM)this->m_szModuleName); + setString(hContact, "SteamID", contact->GetSteamId()); + // update info UpdateContact(hContact, contact); -- cgit v1.2.3