From aae2f23eb6f974f4986fd019b7e4d17713eb44ae Mon Sep 17 00:00:00 2001 From: arthomnix Date: Sun, 5 Feb 2023 14:28:18 +0000 Subject: [PATCH] GH-4699 Move ModrinthInstanceExportTask to modplatform/modrinth; truncate error messages in dialog --- launcher/CMakeLists.txt | 4 +-- .../modrinth}/ModrinthInstanceExportTask.cpp | 31 +++++++++++-------- .../modrinth}/ModrinthInstanceExportTask.h | 23 +++++++++----- launcher/ui/dialogs/ModrinthExportDialog.cpp | 14 ++++++--- 4 files changed, 45 insertions(+), 27 deletions(-) rename launcher/{ => modplatform/modrinth}/ModrinthInstanceExportTask.cpp (89%) rename launcher/{ => modplatform/modrinth}/ModrinthInstanceExportTask.h (80%) diff --git a/launcher/CMakeLists.txt b/launcher/CMakeLists.txt index 47e37df5..e813835d 100644 --- a/launcher/CMakeLists.txt +++ b/launcher/CMakeLists.txt @@ -36,8 +36,6 @@ set(CORE_SOURCES InstanceCopyTask.cpp InstanceImportTask.h InstanceImportTask.cpp - ModrinthInstanceExportTask.h - ModrinthInstanceExportTask.cpp # Use tracking separate from memory management Usable.h @@ -529,6 +527,8 @@ set(ATLAUNCHER_SOURCES set(MODRINTH_SOURCES modplatform/modrinth/ModrinthPackManifest.cpp modplatform/modrinth/ModrinthPackManifest.h + modplatform/modrinth/ModrinthInstanceExportTask.h + modplatform/modrinth/ModrinthInstanceExportTask.cpp ) add_unit_test(Index diff --git a/launcher/ModrinthInstanceExportTask.cpp b/launcher/modplatform/modrinth/ModrinthInstanceExportTask.cpp similarity index 89% rename from launcher/ModrinthInstanceExportTask.cpp rename to launcher/modplatform/modrinth/ModrinthInstanceExportTask.cpp index b1d62085..1def5152 100644 --- a/launcher/ModrinthInstanceExportTask.cpp +++ b/launcher/modplatform/modrinth/ModrinthInstanceExportTask.cpp @@ -17,9 +17,12 @@ #include "JlCompress.h" #include "FileSystem.h" -ModrinthInstanceExportTask::ModrinthInstanceExportTask(InstancePtr instance, ModrinthExportSettings settings) : m_instance(instance), m_settings(settings) {} +namespace Modrinth +{ -void ModrinthInstanceExportTask::executeTask() +InstanceExportTask::InstanceExportTask(InstancePtr instance, ExportSettings settings) : m_instance(instance), m_settings(settings) {} + +void InstanceExportTask::executeTask() { setStatus(tr("Finding files to look up on Modrinth...")); @@ -83,9 +86,9 @@ void ModrinthInstanceExportTask::executeTask() hasher.addData(contents); QString hash = hasher.result().toHex(); - m_responses.append(ModrinthLookupData { - QFileInfo(file), - QByteArray() + m_responses.append(HashLookupData{ + QFileInfo(file), + QByteArray() }); m_netJob->addNetAction(Net::Download::makeByteArray( @@ -96,18 +99,18 @@ void ModrinthInstanceExportTask::executeTask() } } - connect(m_netJob.get(), &NetJob::succeeded, this, &ModrinthInstanceExportTask::lookupSucceeded); - connect(m_netJob.get(), &NetJob::failed, this, &ModrinthInstanceExportTask::lookupFailed); - connect(m_netJob.get(), &NetJob::progress, this, &ModrinthInstanceExportTask::lookupProgress); + connect(m_netJob.get(), &NetJob::succeeded, this, &InstanceExportTask::lookupSucceeded); + connect(m_netJob.get(), &NetJob::failed, this, &InstanceExportTask::lookupFailed); + connect(m_netJob.get(), &NetJob::progress, this, &InstanceExportTask::lookupProgress); m_netJob->start(); setStatus(tr("Looking up files on Modrinth...")); } -void ModrinthInstanceExportTask::lookupSucceeded() +void InstanceExportTask::lookupSucceeded() { setStatus(tr("Creating modpack metadata...")); - QList resolvedFiles; + QList resolvedFiles; QFileInfoList failedFiles; for (const auto &data : m_responses) { @@ -121,7 +124,7 @@ void ModrinthInstanceExportTask::lookupSucceeded() QString sha512Hash = Json::requireString(hashes, "sha512"); QString sha1Hash = Json::requireString(hashes, "sha1"); - ModrinthFile fileData; + ExportFile fileData; QDir gameDir(m_instance->gameRoot()); @@ -231,12 +234,14 @@ void ModrinthInstanceExportTask::lookupSucceeded() emitSucceeded(); } -void ModrinthInstanceExportTask::lookupFailed(const QString &reason) +void InstanceExportTask::lookupFailed(const QString &reason) { emitFailed(reason); } -void ModrinthInstanceExportTask::lookupProgress(qint64 current, qint64 total) +void InstanceExportTask::lookupProgress(qint64 current, qint64 total) { setProgress(current, total); +} + } \ No newline at end of file diff --git a/launcher/ModrinthInstanceExportTask.h b/launcher/modplatform/modrinth/ModrinthInstanceExportTask.h similarity index 80% rename from launcher/ModrinthInstanceExportTask.h rename to launcher/modplatform/modrinth/ModrinthInstanceExportTask.h index d5e103c2..ff59f45b 100644 --- a/launcher/ModrinthInstanceExportTask.h +++ b/launcher/modplatform/modrinth/ModrinthInstanceExportTask.h @@ -12,7 +12,11 @@ #include "net/NetJob.h" #include "ui/dialogs/ModrinthExportDialog.h" -struct ModrinthExportSettings { +namespace Modrinth +{ + +struct ExportSettings +{ QString version; QString name; QString description; @@ -31,13 +35,14 @@ struct ModrinthExportSettings { QString exportPath; }; -struct ModrinthLookupData { +struct HashLookupData +{ QFileInfo fileInfo; QByteArray response; }; // Using the existing Modrinth::File struct from the importer doesn't actually make much sense here (doesn't support multiple hashes, hash is a byte array rather than a string, no file size, etc) -struct ModrinthFile +struct ExportFile { QString path; QString sha512; @@ -46,12 +51,12 @@ struct ModrinthFile qint64 fileSize; }; -class ModrinthInstanceExportTask : public Task +class InstanceExportTask : public Task { Q_OBJECT public: - explicit ModrinthInstanceExportTask(InstancePtr instance, ModrinthExportSettings settings); + explicit InstanceExportTask(InstancePtr instance, ExportSettings settings); protected: //! Entry point for tasks. @@ -64,7 +69,9 @@ private slots: private: InstancePtr m_instance; - ModrinthExportSettings m_settings; - QList m_responses; + ExportSettings m_settings; + QList m_responses; NetJob::Ptr m_netJob; -}; \ No newline at end of file +}; + +} \ No newline at end of file diff --git a/launcher/ui/dialogs/ModrinthExportDialog.cpp b/launcher/ui/dialogs/ModrinthExportDialog.cpp index ac01616e..4b0d3682 100644 --- a/launcher/ui/dialogs/ModrinthExportDialog.cpp +++ b/launcher/ui/dialogs/ModrinthExportDialog.cpp @@ -12,7 +12,7 @@ #include "ModrinthExportDialog.h" #include "ui_ModrinthExportDialog.h" #include "BaseInstance.h" -#include "ModrinthInstanceExportTask.h" +#include "modplatform/modrinth/ModrinthInstanceExportTask.h" #include "minecraft/MinecraftInstance.h" #include "minecraft/PackProfile.h" #include "ProgressDialog.h" @@ -71,7 +71,7 @@ void ModrinthExportDialog::on_datapackPathBrowse_clicked() void ModrinthExportDialog::accept() { - ModrinthExportSettings settings; + Modrinth::ExportSettings settings; settings.name = ui->name->text(); settings.version = ui->version->text(); @@ -109,11 +109,17 @@ void ModrinthExportDialog::accept() settings.exportPath = ui->file->text(); - auto *task = new ModrinthInstanceExportTask(m_instance, settings); + auto *task = new Modrinth::InstanceExportTask(m_instance, settings); connect(task, &Task::failed, [this](QString reason) { - CustomMessageBox::selectable(parentWidget(), tr("Error"), reason, QMessageBox::Critical)->show(); + QString text; + if (reason.length() > 1000) { + text = reason.left(1000) + "..."; + } else { + text = reason; + } + CustomMessageBox::selectable(parentWidget(), tr("Error"), text, QMessageBox::Critical)->show(); }); connect(task, &Task::succeeded, [this, task]() {