aboutsummaryrefslogtreecommitdiff
path: root/launcher/ui/pages/instance/ManagedPackPage.cpp
diff options
context:
space:
mode:
authorflow <flowlnlnln@gmail.com>2022-11-12 12:19:05 -0300
committerflow <flowlnlnln@gmail.com>2022-12-06 17:00:33 -0300
commit527c1113f1c92b8afe59eb0df0dbac8a1d508d98 (patch)
tree96db6ec76ea8537ee4e6e7408ef732b7dccd57fb /launcher/ui/pages/instance/ManagedPackPage.cpp
parent04dbe287931b618c0d12617150ce426dd7359cf2 (diff)
downloadPrismLauncher-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.cpp66
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"