feat: add mod descriptions to CF mods
Signed-off-by: flow <flowlnlnln@gmail.com>
This commit is contained in:
parent
0808a10b7b
commit
368a0ddd44
@ -67,6 +67,43 @@ auto FlameAPI::getModFileChangelog(int modId, int fileId) -> QString
|
|||||||
return changelog;
|
return changelog;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
auto FlameAPI::getModDescription(int modId) -> QString
|
||||||
|
{
|
||||||
|
QEventLoop lock;
|
||||||
|
QString description;
|
||||||
|
|
||||||
|
auto* netJob = new NetJob(QString("Flame::ModDescription"), APPLICATION->network());
|
||||||
|
auto* response = new QByteArray();
|
||||||
|
netJob->addNetAction(Net::Download::makeByteArray(
|
||||||
|
QString("https://api.curseforge.com/v1/mods/%1/description")
|
||||||
|
.arg(QString::number(modId)), response));
|
||||||
|
|
||||||
|
QObject::connect(netJob, &NetJob::succeeded, [netJob, response, &description] {
|
||||||
|
QJsonParseError parse_error{};
|
||||||
|
QJsonDocument doc = QJsonDocument::fromJson(*response, &parse_error);
|
||||||
|
if (parse_error.error != QJsonParseError::NoError) {
|
||||||
|
qWarning() << "Error while parsing JSON response from Flame::ModDescription at " << parse_error.offset
|
||||||
|
<< " reason: " << parse_error.errorString();
|
||||||
|
qWarning() << *response;
|
||||||
|
|
||||||
|
netJob->failed(parse_error.errorString());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
description = Json::ensureString(doc.object(), "data");
|
||||||
|
});
|
||||||
|
|
||||||
|
QObject::connect(netJob, &NetJob::finished, [response, &lock] {
|
||||||
|
delete response;
|
||||||
|
lock.quit();
|
||||||
|
});
|
||||||
|
|
||||||
|
netJob->start();
|
||||||
|
lock.exec();
|
||||||
|
|
||||||
|
return description;
|
||||||
|
}
|
||||||
|
|
||||||
auto FlameAPI::getLatestVersion(VersionSearchArgs&& args) -> ModPlatform::IndexedVersion
|
auto FlameAPI::getLatestVersion(VersionSearchArgs&& args) -> ModPlatform::IndexedVersion
|
||||||
{
|
{
|
||||||
QEventLoop loop;
|
QEventLoop loop;
|
||||||
|
@ -7,6 +7,7 @@ class FlameAPI : public NetworkModAPI {
|
|||||||
public:
|
public:
|
||||||
auto matchFingerprints(const QList<uint>& fingerprints, QByteArray* response) -> NetJob::Ptr;
|
auto matchFingerprints(const QList<uint>& fingerprints, QByteArray* response) -> NetJob::Ptr;
|
||||||
auto getModFileChangelog(int modId, int fileId) -> QString;
|
auto getModFileChangelog(int modId, int fileId) -> QString;
|
||||||
|
auto getModDescription(int modId) -> QString;
|
||||||
|
|
||||||
auto getLatestVersion(VersionSearchArgs&& args) -> ModPlatform::IndexedVersion;
|
auto getLatestVersion(VersionSearchArgs&& args) -> ModPlatform::IndexedVersion;
|
||||||
|
|
||||||
|
@ -4,10 +4,9 @@
|
|||||||
#include "minecraft/MinecraftInstance.h"
|
#include "minecraft/MinecraftInstance.h"
|
||||||
#include "minecraft/PackProfile.h"
|
#include "minecraft/PackProfile.h"
|
||||||
#include "modplatform/flame/FlameAPI.h"
|
#include "modplatform/flame/FlameAPI.h"
|
||||||
#include "net/NetJob.h"
|
|
||||||
|
|
||||||
static ModPlatform::ProviderCapabilities ProviderCaps;
|
|
||||||
static FlameAPI api;
|
static FlameAPI api;
|
||||||
|
static ModPlatform::ProviderCapabilities ProviderCaps;
|
||||||
|
|
||||||
void FlameMod::loadIndexedPack(ModPlatform::IndexedPack& pack, QJsonObject& obj)
|
void FlameMod::loadIndexedPack(ModPlatform::IndexedPack& pack, QJsonObject& obj)
|
||||||
{
|
{
|
||||||
@ -50,6 +49,8 @@ void FlameMod::loadExtraPackData(ModPlatform::IndexedPack& pack, QJsonObject& ob
|
|||||||
if(pack.extraData.wikiUrl.endsWith('/'))
|
if(pack.extraData.wikiUrl.endsWith('/'))
|
||||||
pack.extraData.wikiUrl.chop(1);
|
pack.extraData.wikiUrl.chop(1);
|
||||||
|
|
||||||
|
pack.extraData.body = api.getModDescription(pack.addonId.toInt());
|
||||||
|
|
||||||
pack.extraDataLoaded = true;
|
pack.extraDataLoaded = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user