feat(ManagedPackPage): add Flame UI
Signed-off-by: flow <flowlnlnln@gmail.com>
This commit is contained in:
parent
04dbe28793
commit
527c1113f1
@ -161,6 +161,8 @@ class Config {
|
|||||||
QString MODRINTH_STAGING_URL = "https://staging-api.modrinth.com/v2";
|
QString MODRINTH_STAGING_URL = "https://staging-api.modrinth.com/v2";
|
||||||
QString MODRINTH_PROD_URL = "https://api.modrinth.com/v2";
|
QString MODRINTH_PROD_URL = "https://api.modrinth.com/v2";
|
||||||
|
|
||||||
|
QString FLAME_BASE_URL = "https://api.curseforge.com/v1";
|
||||||
|
|
||||||
QString versionString() const;
|
QString versionString() const;
|
||||||
/**
|
/**
|
||||||
* \brief Converts the Version to a string.
|
* \brief Converts the Version to a string.
|
||||||
|
@ -269,7 +269,65 @@ FlameManagedPackPage::FlameManagedPackPage(BaseInstance* inst, InstanceWindow* i
|
|||||||
connect(ui->versionsComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(suggestVersion()));
|
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
|
QString FlameManagedPackPage::url() const
|
||||||
{
|
{
|
||||||
@ -278,6 +336,12 @@ QString FlameManagedPackPage::url() const
|
|||||||
|
|
||||||
void FlameManagedPackPage::suggestVersion()
|
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"
|
#include "ManagedPackPage.moc"
|
||||||
|
@ -5,6 +5,9 @@
|
|||||||
#include "modplatform/modrinth/ModrinthAPI.h"
|
#include "modplatform/modrinth/ModrinthAPI.h"
|
||||||
#include "modplatform/modrinth/ModrinthPackManifest.h"
|
#include "modplatform/modrinth/ModrinthPackManifest.h"
|
||||||
|
|
||||||
|
#include "modplatform/flame/FlameAPI.h"
|
||||||
|
#include "modplatform/flame/FlamePackIndex.h"
|
||||||
|
|
||||||
#include "ui/pages/BasePage.h"
|
#include "ui/pages/BasePage.h"
|
||||||
|
|
||||||
#include <QWidget>
|
#include <QWidget>
|
||||||
@ -130,4 +133,8 @@ class FlameManagedPackPage final : public ManagedPackPage {
|
|||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void suggestVersion() override;
|
void suggestVersion() override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
Flame::IndexedPack m_pack;
|
||||||
|
FlameAPI m_api;
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user