1
Fork 0
mirror of https://github.com/redstrate/Astra.git synced 2025-04-20 19:57:45 +00:00

Support cancelling and resuming asset updating

This commit is contained in:
Joshua Goins 2022-03-13 20:48:43 -04:00
parent d939d26280
commit a6502fe9d5
2 changed files with 25 additions and 0 deletions

View file

@ -49,4 +49,6 @@ private:
QJsonArray remoteDalamudAssetArray;
QString dataDir;
bool wantsCancel = false;
};

View file

@ -35,6 +35,10 @@ AssetUpdater::AssetUpdater(LauncherCore& launcher) : launcher(launcher) {
dialog = new QProgressDialog("Updating assets...", "Cancel", 0, 0);
connect(dialog, &QProgressDialog::canceled, [this] {
wantsCancel = true;
});
dataDir =
QStandardPaths::writableLocation(QStandardPaths::AppDataLocation);
}
@ -46,6 +50,9 @@ void AssetUpdater::update(const ProfileSettings& profile) {
return;
}
wantsCancel = false;
dialog->show();
// first, we want to collect all of the remote versions
qInfo() << "Starting update sequence...";
@ -54,6 +61,9 @@ void AssetUpdater::update(const ProfileSettings& profile) {
// dalamud assets
{
// we want to prevent logging in before we actually check the version
dalamudAssetNeededFilenames.clear();
remoteDalamudAssetVersion = -1;
dalamudAssetNeededFilenames.append("dummy");
// first we want to fetch the list of assets required
@ -101,6 +111,9 @@ void AssetUpdater::update(const ProfileSettings& profile) {
{
QNetworkRequest request(dalamudVersionManifestURL);
remoteDalamudVersion.clear();
remoteRuntimeVersion.clear();
auto reply = launcher.mgr->get(request);
connect(reply, &QNetworkReply::finished, [this, profile, reply] {
dialog->setLabelText("Checking for Dalamud updates...");
@ -173,6 +186,9 @@ void AssetUpdater::beginInstall() {
}
void AssetUpdater::checkIfDalamudAssetsDone() {
if(wantsCancel)
return;
if(dalamudAssetNeededFilenames.empty()) {
qInfo() << "Finished downloading Dalamud assets.";
@ -188,6 +204,9 @@ void AssetUpdater::checkIfDalamudAssetsDone() {
}
void AssetUpdater::checkIfFinished() {
if(wantsCancel)
return;
if (doneDownloadingDalamud &&
doneDownloadingNativelauncher &&
doneDownloadingRuntimeCore &&
@ -203,7 +222,11 @@ void AssetUpdater::checkIfFinished() {
}
}
}
void AssetUpdater::checkIfCheckingIsDone() {
if(wantsCancel)
return;
if(remoteDalamudVersion.isEmpty() || remoteRuntimeVersion.isEmpty() || remoteDalamudAssetVersion == -1) {
return;
}