From bbd17b6224ea1cbccbe602a123b828b20ec5619f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Sat, 14 Dec 2013 01:18:54 +0100 Subject: Fix twitch --- logic/OneSixInstance.cpp | 13 +++++++++++-- logic/auth/MojangAccount.cpp | 4 ++++ logic/auth/MojangAccount.h | 5 +++++ logic/auth/flows/AuthenticateTask.cpp | 6 ------ logic/auth/flows/RefreshTask.cpp | 9 +++++---- 5 files changed, 25 insertions(+), 12 deletions(-) diff --git a/logic/OneSixInstance.cpp b/logic/OneSixInstance.cpp index 337830a2..fd41b9e5 100644 --- a/logic/OneSixInstance.cpp +++ b/logic/OneSixInstance.cpp @@ -152,8 +152,17 @@ QStringList OneSixInstance::processMinecraftArgs(MojangAccountPtr account) token_mapping["game_directory"] = absRootDir; QString absAssetsDir = QDir("assets/").absolutePath(); token_mapping["game_assets"] = reconstructAssets(d->version).absolutePath(); - //TODO: this is something new and not even fully implemented in the vanilla launcher. - token_mapping["user_properties"] = "{ }"; + + auto user = account->user(); + QJsonObject userAttrs; + for(auto key: user.properties.keys()) + { + auto array = QJsonArray::fromStringList(user.properties.values(key)); + userAttrs.insert(key, array); + } + QJsonDocument value(userAttrs); + + token_mapping["user_properties"] = value.toJson(QJsonDocument::Compact); token_mapping["user_type"] = account->currentProfile()->legacy ? "legacy" : "mojang"; // 1.7.3+ assets tokens token_mapping["assets_root"] = absAssetsDir; diff --git a/logic/auth/MojangAccount.cpp b/logic/auth/MojangAccount.cpp index 185c735c..bc6af98f 100644 --- a/logic/auth/MojangAccount.cpp +++ b/logic/auth/MojangAccount.cpp @@ -68,6 +68,7 @@ MojangAccountPtr MojangAccount::loadFromJson(const QJsonObject &object) User u; QJsonObject userStructure = object.value("user").toObject(); u.id = userStructure.value("id").toString(); + /* QJsonObject propMap = userStructure.value("properties").toObject(); for(auto key: propMap.keys()) { @@ -75,6 +76,7 @@ MojangAccountPtr MojangAccount::loadFromJson(const QJsonObject &object) for(auto value: values) u.properties.insert(key, value.toString()); } + */ account->m_user = u; } account->m_username = username; @@ -119,6 +121,7 @@ QJsonObject MojangAccount::saveToJson() const QJsonObject userStructure; { userStructure.insert("id", m_user.id); + /* QJsonObject userAttrs; for(auto key: m_user.properties.keys()) { @@ -126,6 +129,7 @@ QJsonObject MojangAccount::saveToJson() const userAttrs.insert(key, array); } userStructure.insert("properties", userAttrs); + */ } json.insert("user", userStructure); diff --git a/logic/auth/MojangAccount.h b/logic/auth/MojangAccount.h index 9eecbc4f..325aa826 100644 --- a/logic/auth/MojangAccount.h +++ b/logic/auth/MojangAccount.h @@ -122,6 +122,11 @@ public: /* queries */ return m_profiles; } + const User & user() + { + return m_user; + } + //! Get the session ID required for legacy Minecraft versions QString sessionId() const { diff --git a/logic/auth/flows/AuthenticateTask.cpp b/logic/auth/flows/AuthenticateTask.cpp index cc26cd1b..f60be35d 100644 --- a/logic/auth/flows/AuthenticateTask.cpp +++ b/logic/auth/flows/AuthenticateTask.cpp @@ -162,23 +162,17 @@ bool AuthenticateTask::processResponse(QJsonObject responseData) } // this is what the vanilla launcher passes to the userProperties launch param - // doesn't seem to be used for anything so far? I don't get any of this data on my account - // (peterixxx) - // is it a good idea to log this? if (responseData.contains("user")) { User u; auto obj = responseData.value("user").toObject(); u.id = obj.value("id").toString(); - QLOG_DEBUG() << "User ID: " << u.id ; auto propArray = obj.value("properties").toArray(); - QLOG_DEBUG() << "User Properties: "; for (auto prop : propArray) { auto propTuple = prop.toObject(); auto name = propTuple.value("name").toString(); auto value = propTuple.value("value").toString(); - QLOG_DEBUG() << name << " : " << value; u.properties.insert(name, value); } m_account->m_user = u; diff --git a/logic/auth/flows/RefreshTask.cpp b/logic/auth/flows/RefreshTask.cpp index 16feac6e..5f68ccc7 100644 --- a/logic/auth/flows/RefreshTask.cpp +++ b/logic/auth/flows/RefreshTask.cpp @@ -112,20 +112,21 @@ bool RefreshTask::processResponse(QJsonObject responseData) // this is what the vanilla launcher passes to the userProperties launch param if (responseData.contains("user")) { + User u; auto obj = responseData.value("user").toObject(); - auto userId = obj.value("id").toString(); + u.id = obj.value("id").toString(); auto propArray = obj.value("properties").toArray(); - QLOG_DEBUG() << "User ID: " << userId; - QLOG_DEBUG() << "User Properties: "; for (auto prop : propArray) { auto propTuple = prop.toObject(); auto name = propTuple.value("name").toString(); auto value = propTuple.value("value").toString(); - QLOG_DEBUG() << name << " : " << value; + u.properties.insert(name, value); } + m_account->m_user = u; } + // We've made it through the minefield of possible errors. Return true to indicate that // we've succeeded. QLOG_DEBUG() << "Finished reading refresh response."; -- cgit v1.2.3