From 2113df5d8d1553e9df58c4115496bb4e1a6b27fb Mon Sep 17 00:00:00 2001 From: ZhiYi Date: Sat, 14 Sep 2024 17:44:20 +0800 Subject: [PATCH] MultiProfile Login issue workaround for now --- launcher/minecraft/auth/Yggdrasil.cpp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/launcher/minecraft/auth/Yggdrasil.cpp b/launcher/minecraft/auth/Yggdrasil.cpp index 9cb67c96b..a5fd3fe79 100644 --- a/launcher/minecraft/auth/Yggdrasil.cpp +++ b/launcher/minecraft/auth/Yggdrasil.cpp @@ -216,10 +216,22 @@ void Yggdrasil::processResponse(QJsonObject responseData) m_data->yggdrasilToken.issueInstant = QDateTime::currentDateTimeUtc(); // Get UUID here since we need it for later + // FIXME: Here is a simple workaround for now,, which uses the first available profile when selectedProfile is not provided. auto profile = responseData.value("selectedProfile"); if (!profile.isObject()) { - changeState(AccountTaskState::STATE_FAILED_HARD, tr("Authentication server didn't send a selected profile.")); - return; + auto profiles = responseData.value("availableProfiles"); + if (!profiles.isArray()) { + changeState(AccountTaskState::STATE_FAILED_HARD, tr("Authentication server didn't send available profiles.")); + return; + } else { + if(profiles.toArray().isEmpty()) { + changeState(AccountTaskState::STATE_FAILED_HARD, tr("Account has no available profile.")); + return; + } else { + profile = profiles.toArray().first(); + } + } + } auto profileObj = profile.toObject();