5da87d1904
Beginning with efa3fbff39bf0dabebdf1c6330090ee320895a4d, we separated the failing and the aborting signals, as they can mean different things in certain contexts. Still, some places are not yet changed to reflect this modification. This can cause aborting of progress dialogs to not work, instead making the application hang in an unusable satte. This goes through some places where it's not hooked up yet, fixing their behaviour in those kinds of situation.
53 lines
1.6 KiB
C++
53 lines
1.6 KiB
C++
#include "YggdrasilStep.h"
|
|
|
|
#include "minecraft/auth/AuthRequest.h"
|
|
#include "minecraft/auth/Parsers.h"
|
|
#include "minecraft/auth/Yggdrasil.h"
|
|
|
|
YggdrasilStep::YggdrasilStep(AccountData* data, QString password) : AuthStep(data), m_password(password) {
|
|
m_yggdrasil = new Yggdrasil(m_data, this);
|
|
|
|
connect(m_yggdrasil, &Task::failed, this, &YggdrasilStep::onAuthFailed);
|
|
connect(m_yggdrasil, &Task::succeeded, this, &YggdrasilStep::onAuthSucceeded);
|
|
connect(m_yggdrasil, &Task::aborted, this, &YggdrasilStep::onAuthFailed);
|
|
}
|
|
|
|
YggdrasilStep::~YggdrasilStep() noexcept = default;
|
|
|
|
QString YggdrasilStep::describe() {
|
|
return tr("Logging in with Mojang account.");
|
|
}
|
|
|
|
void YggdrasilStep::rehydrate() {
|
|
// NOOP, for now.
|
|
}
|
|
|
|
void YggdrasilStep::perform() {
|
|
if(m_password.size()) {
|
|
m_yggdrasil->login(m_password);
|
|
}
|
|
else {
|
|
m_yggdrasil->refresh();
|
|
}
|
|
}
|
|
|
|
void YggdrasilStep::onAuthSucceeded() {
|
|
emit finished(AccountTaskState::STATE_WORKING, tr("Logged in with Mojang"));
|
|
}
|
|
|
|
void YggdrasilStep::onAuthFailed() {
|
|
// TODO: hook these in again, expand to MSA
|
|
// m_error = m_yggdrasil->m_error;
|
|
// m_aborted = m_yggdrasil->m_aborted;
|
|
|
|
auto state = m_yggdrasil->taskState();
|
|
QString errorMessage = tr("Mojang user authentication failed.");
|
|
|
|
// NOTE: soft error in the first step means 'offline'
|
|
if(state == AccountTaskState::STATE_FAILED_SOFT) {
|
|
state = AccountTaskState::STATE_OFFLINE;
|
|
errorMessage = tr("Mojang user authentication ended with a network error.");
|
|
}
|
|
emit finished(state, errorMessage);
|
|
}
|