52 lines
1.5 KiB
C++
52 lines
1.5 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);
|
||
|
}
|
||
|
|
||
|
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(AccountTaskState::STATE_OFFLINE, errorMessage);
|
||
|
}
|