diff options
author | flow <flowlnlnln@gmail.com> | 2022-11-12 12:19:05 -0300 |
---|---|---|
committer | flow <flowlnlnln@gmail.com> | 2022-12-06 17:00:33 -0300 |
commit | 527c1113f1c92b8afe59eb0df0dbac8a1d508d98 (patch) | |
tree | 96db6ec76ea8537ee4e6e7408ef732b7dccd57fb /launcher/ui/pages/instance/ManagedPackPage.cpp | |
parent | 04dbe287931b618c0d12617150ce426dd7359cf2 (diff) | |
download | PrismLauncher-527c1113f1c92b8afe59eb0df0dbac8a1d508d98.tar.gz PrismLauncher-527c1113f1c92b8afe59eb0df0dbac8a1d508d98.tar.bz2 PrismLauncher-527c1113f1c92b8afe59eb0df0dbac8a1d508d98.zip |
feat(ManagedPackPage): add Flame UI
Signed-off-by: flow <flowlnlnln@gmail.com>
Diffstat (limited to 'launcher/ui/pages/instance/ManagedPackPage.cpp')
-rw-r--r-- | launcher/ui/pages/instance/ManagedPackPage.cpp | 66 |
1 files changed, 65 insertions, 1 deletions
diff --git a/launcher/ui/pages/instance/ManagedPackPage.cpp b/launcher/ui/pages/instance/ManagedPackPage.cpp index 2f1e4ff0..45be7c71 100644 --- a/launcher/ui/pages/instance/ManagedPackPage.cpp +++ b/launcher/ui/pages/instance/ManagedPackPage.cpp @@ -269,7 +269,65 @@ FlameManagedPackPage::FlameManagedPackPage(BaseInstance* inst, InstanceWindow* i connect(ui->versionsComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(suggestVersion())); } -void FlameManagedPackPage::parseManagedPack() {} +void FlameManagedPackPage::parseManagedPack() { + qDebug() << "Parsing Flame pack"; + + auto netJob = new NetJob(QString("Flame::PackVersions(%1)").arg(m_inst->getManagedPackName()), APPLICATION->network()); + auto response = new QByteArray(); + + QString id = m_inst->getManagedPackID(); + + netJob->addNetAction(Net::Download::makeByteArray(QString("%1/mods/%2/files").arg(BuildConfig.FLAME_BASE_URL, id), response)); + + QObject::connect(netJob, &NetJob::succeeded, this, [this, response, id] { + QJsonParseError parse_error{}; + QJsonDocument doc = QJsonDocument::fromJson(*response, &parse_error); + if (parse_error.error != QJsonParseError::NoError) { + qWarning() << "Error while parsing JSON response from Flame at " << parse_error.offset + << " reason: " << parse_error.errorString(); + qWarning() << *response; + + setFailState(); + + return; + } + + try { + auto obj = doc.object(); + auto data = Json::ensureArray(obj, "data"); + Flame::loadIndexedPackVersions(m_pack, data); + } catch (const JSONValidationError& e) { + qDebug() << *response; + qWarning() << "Error while reading modrinth modpack version: " << e.cause(); + + setFailState(); + return; + } + + for (auto version : m_pack.versions) { + QString name; + + name = version.version; + + if (version.fileId == m_inst->getManagedPackVersionID().toInt()) + name.append(tr(" (Current)")); + + ui->versionsComboBox->addItem(name, QVariant(version.fileId)); + } + + suggestVersion(); + + m_loaded = true; + }); + QObject::connect(netJob, &NetJob::failed, this, &FlameManagedPackPage::setFailState); + QObject::connect(netJob, &NetJob::aborted, this, &FlameManagedPackPage::setFailState); + QObject::connect(netJob, &NetJob::finished, this, [response, netJob] { + netJob->deleteLater(); + delete response; + }); + + netJob->start(); +} QString FlameManagedPackPage::url() const { @@ -278,6 +336,12 @@ QString FlameManagedPackPage::url() const void FlameManagedPackPage::suggestVersion() { + auto index = ui->versionsComboBox->currentIndex(); + auto version = m_pack.versions.at(index); + + ui->changelogTextBrowser->setHtml(m_api.getModFileChangelog(m_inst->getManagedPackID().toInt(), version.fileId)); + + ManagedPackPage::suggestVersion(); } #include "ManagedPackPage.moc" |