1
Fork 0
mirror of https://github.com/redstrate/Astra.git synced 2025-04-20 11:47:46 +00:00

Adapt asset launcher, hook into login system

This commit is contained in:
Joshua Goins 2023-07-30 16:19:51 -04:00
parent 37119f01b9
commit 019933a103
2 changed files with 28 additions and 33 deletions

View file

@ -45,7 +45,7 @@ void AssetUpdater::update()
return;
}
// dialog = new QProgressDialog("Updating assets...", "Cancel", 0, 0);
Q_EMIT launcher.stageChanged("Updating assets...");
// first, we want to collect all of the remote versions
@ -65,7 +65,7 @@ void AssetUpdater::update()
auto reply = launcher.mgr->get(request);
connect(reply, &QNetworkReply::finished, [reply, this] {
// dialog->setLabelText("Checking for Dalamud asset updates...");
Q_EMIT launcher.stageChanged("Checking for Dalamud asset updates...");
// TODO: handle asset failure
QJsonDocument doc = QJsonDocument::fromJson(reply->readAll());
@ -93,7 +93,7 @@ void AssetUpdater::update()
auto reply = launcher.mgr->get(request);
connect(reply, &QNetworkReply::finished, [this, reply] {
// dialog->setLabelText("Checking for Dalamud updates...");
Q_EMIT launcher.stageChanged("Checking for Dalamud updates...");
QByteArray str = reply->readAll();
// for some god forsaken reason, the version string comes back as raw
@ -153,9 +153,6 @@ void AssetUpdater::beginInstall()
void AssetUpdater::checkIfDalamudAssetsDone()
{
// if (dialog->wasCanceled())
// return;
if (dalamudAssetNeededFilenames.empty()) {
qInfo() << "Finished downloading Dalamud assets.";
@ -172,16 +169,10 @@ void AssetUpdater::checkIfDalamudAssetsDone()
void AssetUpdater::checkIfFinished()
{
// if (dialog->wasCanceled())
// return;
if (doneDownloadingDalamud && doneDownloadingRuntimeCore && doneDownloadingRuntimeDesktop && dalamudAssetNeededFilenames.empty()) {
if (needsRuntimeInstall || needsDalamudInstall) {
beginInstall();
} else {
// dialog->setLabelText("Finished!");
// dialog->close();
finishedUpdating();
}
}
@ -189,9 +180,6 @@ void AssetUpdater::checkIfFinished()
void AssetUpdater::checkIfCheckingIsDone()
{
// if (dialog->wasCanceled())
// return;
if (remoteDalamudVersion.isEmpty() || remoteRuntimeVersion.isEmpty() || remoteDalamudAssetVersion == -1) {
return;
}
@ -199,7 +187,7 @@ void AssetUpdater::checkIfCheckingIsDone()
// now that we got all the information we need, let's check if anything is
// updateable
// dialog->setLabelText("Starting update...");
Q_EMIT launcher.stageChanged("Starting Dalamud update...");
// dalamud injector / net runtime
if (m_profile.runtimeVersion != remoteRuntimeVersion) {
@ -213,7 +201,7 @@ void AssetUpdater::checkIfCheckingIsDone()
connect(reply, &QNetworkReply::finished, [this, reply] {
qInfo() << "Dotnet-core finished downloading!";
// dialog->setLabelText("Updating Dotnet-core...");
Q_EMIT launcher.stageChanged("Updating Dotnet-core...");
QFile file(tempDir.path() + "/dotnet-core.zip");
file.open(QIODevice::WriteOnly);
@ -234,7 +222,7 @@ void AssetUpdater::checkIfCheckingIsDone()
connect(reply, &QNetworkReply::finished, [this, reply] {
qInfo() << "Dotnet-desktop finished downloading!";
// dialog->setLabelText("Updating Dotnet-desktop...");
Q_EMIT launcher.stageChanged("Updating Dotnet-desktop...");
QFile file(tempDir.path() + "/dotnet-desktop.zip");
file.open(QIODevice::WriteOnly);
@ -265,7 +253,7 @@ void AssetUpdater::checkIfCheckingIsDone()
connect(reply, &QNetworkReply::finished, [this, reply] {
qInfo() << "Dalamud finished downloading!";
// dialog->setLabelText("Updating Dalamud...");
Q_EMIT launcher.stageChanged("Updating Dalamud...");
QFile file(tempDir.path() + "/latest.zip");
file.open(QIODevice::WriteOnly);
@ -291,7 +279,7 @@ void AssetUpdater::checkIfCheckingIsDone()
if (remoteDalamudAssetVersion != m_profile.dalamudAssetVersion) {
qInfo() << "Dalamud assets out of date.";
// dialog->setLabelText("Updating Dalamud assets...");
Q_EMIT launcher.stageChanged("Updating Dalamud assets...");
dalamudAssetNeededFilenames.clear();

View file

@ -336,21 +336,28 @@ void LauncherCore::addRegistryKey(const Profile &settings, QString key, QString
void LauncherCore::login(Profile *profile, const QString &username, const QString &password, const QString &oneTimePassword)
{
auto loginInformation = new LoginInformation(this);
loginInformation->profile = profile;
loginInformation->username = username;
loginInformation->password = password;
loginInformation->oneTimePassword = oneTimePassword;
auto assetUpdater = new AssetUpdater(*profile, *this, this);
assetUpdater->update();
if (profile->account()->rememberPassword()) {
profile->account()->setPassword(password);
}
connect(assetUpdater, &AssetUpdater::finishedUpdating, this, [this, assetUpdater, profile, username, password, oneTimePassword] {
auto loginInformation = new LoginInformation(this);
loginInformation->profile = profile;
loginInformation->username = username;
loginInformation->password = password;
loginInformation->oneTimePassword = oneTimePassword;
if (loginInformation->profile->account()->isSapphire()) {
sapphireLauncher->login(loginInformation->profile->account()->lobbyUrl(), *loginInformation);
} else {
squareBoot->checkGateStatus(loginInformation);
}
if (profile->account()->rememberPassword()) {
profile->account()->setPassword(password);
}
if (loginInformation->profile->account()->isSapphire()) {
sapphireLauncher->login(loginInformation->profile->account()->lobbyUrl(), *loginInformation);
} else {
squareBoot->checkGateStatus(loginInformation);
}
assetUpdater->deleteLater();
});
}
bool LauncherCore::autoLogin(Profile &profile)